一、概述:

  SaltStack 系统自动化配置和管理工具 采用 zeromq 消息队列进行通信,和 Puppet/Chef 比起来,SaltStack 速度快得多。

还有一点我们喜欢 SaltStack 的地方是它是 Python 写的,比 Puppet/Chef 这些 Ruby 工具更接近我们的能力圈。

二、作用:

操作系统和软件的安装、配置、初始化等;

自动执行任务,比如定期备份、清除日志等;

手动执行任务,比如部署应用、升级、重启、检查和校验文件系统、增加用户等。

三、架构:

master/minion 

一台master(主控)安装服务端软件salt master,在多台minion(受控)安装salt minion,在主控机器上给下属(受控)发命

令,在受控机器上接受和执行上级(主控)的命令。

四、SaltStack 安装:

在Centos 6.x上安装salt master:

# rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm 
# yum update 
# yum install salt-master

 

安装受控端salt minion:

# rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm 
# yum update 
# yum install salt-minion

五、修改salt minion配置文件,让 salt minion 指向 salt master 服务器地址:

#vim /etc/salt/minion
master: aa.cn //主机名或IP地址
id:salt-1//昵称、任意取
#/etc/init.d/salt-minion restart//重启受控服务

六、主控和被控端的认证

在 master 上执行 salt-key list 就会看到有个 minion1.vpsee.com 请求加入受控,执行 -a 接受请求后,主控和受控之间

的信任关系就建立起来了,主控就可以任意 “摆布” 受控了:

# salt-key list //需要认证主机列表
Accepted Keys: 
Unaccepted Keys: 
salt-1
Rejected Keys: 
# salt-key -a salt-1 //生成认证
The following keys are going to be accepted: 
Unaccepted Keys: 
salt-1
Proceed? [n/Y]

七、常用执行命令

1、在主控机器上执行一个命令,让所有受控机器执行 hostname 命令:

#salt '*' cmd.run "hostname"
salt-1:
    web100.bb.cn
salt-server:
    aa.cn

2、在主控机器上执行一个命令,让所有受控机器上执行内建 test.ping 命令:

#salt '*' test.ping
salt-1:
    True
salt-server:
    True
3、# salt '*' disk.usage 
4、# salt '*' network.interfaces

查看受控端模块函数帮助信息:

#salt '*' sys.doc | more


八、配置管理

批量安装rpm包

1、salt的配置管理指令文件默认保存在/srv/salt中

2、salt使用PYAMI语法作为他的模板文件格式

3、

# vim /etc/salt/master      #启用配置文件目录,nodegroups是salt对minion的分组功能
 file_roots:
   base:
     - /srv/salt/

4、

#vim /srv/salt/top.sls#新建基础配置文件(TOP文件),这个文件提供了其他文件的映射
base:#base告诉salt这是基础配置文件,可以应用在所以机器上
  '*':#统配所有目标机器
   - servers#可以是任意值,运行你识别那些质量可以使用
   
# vim /srv/salt/servers.sls
iotop:#包管理工具可识别的软件包名称
  pkg:
   - installed#处理包方式,如果删除是remove
5、#salt '*' state.highstate -v
#state.highstate是触发这些同步的命令,‘*’指所有主机,-v显示详细信息