一、概述:
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显示详细信息