一、salt简介

  saltstack是一个基于C/S架构的集中化管理平台,具备配置管理、远程执行、监控等功能。使用saltstack可以一键批量部署服务、远程执行命令,在大规模的服务集群中大大提高了运维人员的工作效率。

  saltstack基于python语言开发,使用轻量级消息队列(ZeroMQpub/sub进行通信。

  minion在首次时,会在/etc/salt/pki/minion/(该路径可在/etc/salt/minion中设置)下自动生成minion.pem(私钥)和minion.pub(公钥),然后将minion.pub发送给mastermaster通过salt-key -A命令接收minion的公钥时,在master/etc/salt/pki/master/minions/目录下就会产生保存minion公钥的文件,之后master就能对minion发送指令了。

二、salt安装

  salt运用了YAML语言、Jinja模版语言、ZeroMQ,这些都不需要安装。需要做的就是配置一个epel源,然后执行yum -y install salt-master,就会发现这些依赖包已经在这个过程中全部被安装了。 

  在要被管理的机器上配置epel源,执行yum -y install salt-minion完成客户端的安装。

三、salt配置

  默认的配置文件都存放在/etc/salt/目录下。

  master文件配置:

[root@zhen ~]# sed -e '/^#/d;/^$/d'/etc/salt/master
default_include:master.d/*.conf
timeout: 60
file_roots:                                    #指定文件路径
  base:                                       
    - /etc/salt/states/base             #base环境路径
  prod:
    - /etc/salt/states/prod               #prod环境路径

  因为是刚开始学习salt,使用这些配置就足够完成很多操作了。定义的两个文件路径需要手动生成。

  minion文件配置:

[root@zhen ~]# sed -e '/^#/d;/^$/d'/etc/salt/minion
master:  192.168.199.79
id:  saltstack.test.com                          #id可以自定义,最好有一定的规律

  salt在配置上是非常简单的,但是它实现的功能就远不止这么简单了!

四、启动测试

  1、启动:

  在CentOS系列系统上使用yum安装的软件启动方式都是一样的:

[root@zhen ~]# salt-key -L
Accepted Keys:                          
Denied Keys:                             
Unaccepted Keys:
saltstack.test.com
Rejected Keys:

  2、测试:

  (1)查看key列表:

[root@zhen ~]# salt-key -L
Accepted Keys:                          
Denied Keys:                             
Unaccepted Keys:
saltstack.test.com
Rejected Keys:

从上面可以看出来saltstack.test.comkey还没有接收,用下面的命令接收所有没有接收的key

[root@zhen ~]#salt-key -A
The followingkeys are going to be accepted:
Unaccepted Keys:
saltstack.test.com
Proceed? [n/Y] Y
Key for minionsaltstack.test.com accepted

  2key接收之后就可以对minion远程执行命令了:

[root@zhen ~]#salt 'saltstack.test.com' test.ping
saltstack.test.com:
      True            #使用test.ping测试用minion的连通性
[root@zhen ~]#salt 'saltstack.test.com' cmd.run 'date'
saltstack.test.com:
      WedJul 13 18:51:00 EDT 2016        #使用cmd.run执行date命令

注意:执行命令时,如果针对所有节点,可以用salt ‘*’加上命令即可。但是对所有节点进行操作时,最好在命令后面加上 test=True 查看下执行的操作都有哪些,再执行命令。