saltstack自动化运维平台的介绍部署基本使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了saltstack自动化运维平台的介绍部署基本使用相关的知识,希望对你有一定的参考价值。

  saltstack:服务器基础架构集中化管理平台,有配置管理、远程执行、监控等功能,基于Python语言开发,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建

       优点(1.部署简单便捷;2支持的系统多样;3配置简单,功能强,扩展性好;4基于主从,用证书建立连接,安全性高;5支持API及自定义模块)

       认证minion在启动时,会在/etc/salt/pki/minion自动生成minion.pem(private key)和minion.pub(public key) ,然后将minion.pub发给master服务端,master收到key后通过salt-key命令accept minion public key ,这样在master的/etc/salt//pki/master/minions下将会有minion id命名的key ,这时master可对minion发送指令。

       连接master服务端 服务默认监听端口4505 4506

               4505为saltstack的消息发布系统

               4506为saltstack客户端与服务端通信接口

               通过lsof查看4505 会发现minion持续保持ESTABLISHED(已建立)状态

   SaltStack

Salt类似Ansible,因为它也是基于CLI的工具,采用了推送方法实现客户端通信。它可以通过Git或通过程序包管理系统安装到主服务器和客户端上。客户端会向主服务器提出请求,请求在主服务器上得到接受后,就可以控制该客户端了。

Salt可以通过普通的SSH与客户端进行通信,但如果使用名为minion的客户端代理软件,可以大大增强可扩展性。此外,Salt含有一个异步文件服务器,可以为客户端加快文件服务速度,这完全是Salt注重高扩展性的一个体现。

  与Ansible一样,你可以直接通过CLI,向客户端发出命令,比如启动服务或安装程序包;你也可以使用名为stateYAML配置文件,处理比较复杂的任务。还有“pillar”,这些是放在集中地方的数据集,YAML配置文件可以在运行期间访问它们。

  你可以直接通过CLI,向客户端请求配置信息,比如内核版本或网络接口方面的详细信息。只要使用名为“grain”的库存元素,就可以描述客户端;这样一来,管理员可以轻松向某一种类型的服务器发出命令,不需要依赖已配置群组。比如说,只要使用一个CLI命令,你就可以向运行某个内核版本的每个客户端发送命令。

  与PuppetChefAnsible一样,Salt也提供了大量的模块,以处理特定的软件、操作系统和云服务。自定义模块可以用PythonPyDSL来编写。除了Unix管理外,Salt的确提供Windows管理功能,但它还是更擅长管理UnixLinux系统。

SaltWeb用户界面Halite非常新,功能不如其他系统的Web用户界面来得全面。它提供了事件日志和客户端状态的视图,能够在客户端上运行命令,但除此之外乏善可陈。

Salt的最大优点在于可扩展性和弹性。你可以有多个级别的主服务器。上游主服务器可以控制下游主服务器及其客户端。另一个优点在于对等系统,让客户端可以向主服务器提出问题,然后主服务器从其他服务器得到答案,提供全面信息。如果需要在实时数据库中查询数据,以便完成客户端的配置,这个优点就很方便。



部署环境

实验环境:

IP地址
角色
环境
10.0.0.30
master

centos7.3

10.0.040

minion

centos7.3
10.0.0.50
minion
centos7.3

设置环境

修改主机名

hostnamectl set-hostname dlp.linuxwang.cn
hostnamectl set-hostname node01.linuxwang.cn
hostnamectl set-hostname node02.linuxwang.cn

在所有主机添加本地解析

[[email protected] ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.30    dlp.linuxwang.cn
10.0.0.40    node01.linuxwang.cn
10.0.0.50    node02.linuxwang.cn



SaltStack的通信模式总共分为2种模式:ZeroMQ、REAT,鉴于REAT目前还不是太稳定,我们选择ZeroMQ模式,本次安装采用源码安装的方式


在master配置(10.0.0.30)

yum -y install epel-release
yum -y install salt-master
for i in enable restart status; do systemctl $i salt-master;done
netstat -utpln |grep -e 4505 -e 4506

   tcp        0      0 0.0.0.0:4505            0.0.0.0:*               LISTEN      17452/python        
   tcp        0      0 0.0.0.0:4506            0.0.0.0:*               LISTEN      17470/python


在minion配置(10.0.0.40-50)

yum -y install epel-release
yum -y install salt-minion
ping dlp
vi /etc/salt/minion
master: dlp.linuxwang.cn  ##修改16行,指定master
:wq
for i in enable restart status;do systemctl $i salt-minion;done


授权

salt-key -L 查看当前的salt key信息

    [[email protected] ~]# salt-key -L
       Accepted Keys:
       node01.linuxfan.cn
       node02.linuxfan.cn
       Denied Keys:
       Unaccepted Keys:
       Rejected Keys:

salt-key -A

       [[email protected] ~]# salt-key -A
       The following keys are going to be accepted:
       Unaccepted Keys:
       node01.linuxwang.cn
       node02.linuxwang.cn
       Proceed? [n/Y]
Y  
       Key for minion node01.linuxwang.cn accepted.
       Key for minion node02.linuxwang.cn accepted.

授权成功可进行远程操作


测试被控主机的连通性

# salt ‘*‘ test.ping

   [[email protected] ~]# salt "*" test.ping
   node01.linuxwang.cn:
    True
   node02.linuxwang.cn:


这时开始涉及我们的saltstack模块的使用, 由一个一个的模块对我们的远程的主机进行操作。

模块介绍

Archive模块:实现系统层面的压缩包调用,支持 gunzip、gzip、rar、tar、unzip等
           
cmd模块  :实现远程命令行调用执行(默认具备root权限)
        
cp模块    :实现远程文件、目录的复制,以及下载URL文件等操作 
         
cron模块  :实现被控主机的crontab计划任务操作
          

dnsutil模块:实现被控主机通过DNS相关操作
file模块:被控主机文件常见操作,包括文件读写、权限、查找、校验等
iptables模块:被控主机Iptables支持
network模块:返回被控主机网络信息
pkg包管理:被控主机程序包管理,如 yum 、apt-get等
service服务模块:被控主机程序包管理服务


本文出自 “Haproxy搭建web集群” 博客,请务必保留此出处http://12653557.blog.51cto.com/12643557/1956826

以上是关于saltstack自动化运维平台的介绍部署基本使用的主要内容,如果未能解决你的问题,请参考以下文章

运维自动化工具 Ansible-playbook

ansible自动运维工具之ansible-playbook详解

如何零基础搭建自己的运维监控平台(Linux版)——WGCLOUD

ansible-playbook批量部署zabbix

ansible-playbook实现MySQL的二进制部署

自动化运维工具ansible详解