一、简介
- Saltstack使用Python开发,是一个非常简单易用和轻量级的管理工具。由Master和Minion构成,通过ZeroMQ进行通信
- Saltstack的master端监听4505与4506端口,4505为salt的消息发布系统,4506为salt客户端与服务端通信的端口
- salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制
- 如果连接断开,sever端将无法对客户端进行控制;客户端若检查到断开后会定期的一直连接master端
二、部署
1、server端部署
rpm -Uvh http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm yum -yinstallsalt-master
2、client端部署
rpm -Uvh http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm yum -yinstallsalt-minion
3、server配置文件(/etc/salt/master)
interface: 115.28.2.1#此处是server端监听的地址。 auto_accept: True#此处是自动接受客户端发送过来的key,如果服务器很多的话,需要开启该功能
4、client端配置(/etc/salt/minion)
master: 115.28.2.1#这里改成你的master服务器地址
id: web01#建议这里修改成主机名,便于master端分辨
#每5分钟自动与master同步配置
schedule:
highstate:
function:state.highstate
minutes: 5
5、启动
(1)启动server端 /etc/salt/master -d #后台启动 (2)启动client端 /etc/salt/minion -d 注意:minion启动后,自动会生成公钥私钥,并把公钥发送到master端。minion不监听端口,全靠和master保持长连接,可通过netstat-an|grepES来查看是否有连接
master证书存放位置:
/etc/salt/pki/master/minions
salt-key -L#查询所有接收到的证书
salt-key -a <证书名>#接收单个证书
salt-key -A#接受所有证书
salt-key -d <证书名>#删除单个证书
salt-key -D#删除所有证书
三、语法
标准格式:salt [选项]'' [arguments] salt '*' test.ping #*为匹配所有主机,test.ping为salt一个函数,注:*号是正则,若分了多个组,可以类似于web*,只匹配web服务器 salt '*' cmd.run 'df -h' #查看所有主机的磁盘信息,cmd.run执行单个命令 salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"' #cmd.script执行一个脚本,即把本地脚本拷贝到远程主机上执行,hello.sh要放在指定的文件存放路径,默认是/srv/salt/ salt '*' state.highstate #向客户端推送master端配置。 salt '*' cmd.run 'df -h ' -t 5 #超时控制
特殊常用项:
salt-cp '*' /etc/hosts/etc/hosts #把master上的hosts文件分发到所有主机
四、分组管理
格式:示例 nodegroups: group1: 'L@op-test-107,op-test-108' group1: '[email protected],bar.domain.com,baz.domain.com or bl*.domain.com' group2: 'G@os:Debian and foo.domain.com' group3: 'G@os:Debian and N@group1' group4: - 'G@foo:bar' - 'or' - 'G@foo:baz'
五、分组执行
salt -N group1 cmd.run 'hostname'
六、客户端状态检查
注:该处状态检查salt使用的是test.ping,如果服务器禁ping,则该处不准。 salt-run manage.status#查看所有客户端up/down状态 salt-run manage.up#只显示up状态的客户端 salt-run manage.down#只显示down状态的客户端
七、自动分发文件
1、指定同步目录后,文件只需放到该目录下就会自动同步到minion端
2、top.sls文件中指定哪些主机访问哪些目录
3、用dir_mode和file_mode来设置文件和目录的权限(- dir_mode: 755;- file_mode: 744)
示例: /data/share: #moni上的文件 file.managed: - source: #源文件位置 - user: #文件属主 - group: #文件属组 - mode: #文件权限
八、进程管理
cat pack.sls apache: pkg: - name: httpd - installed service: - name: httpd - running - reload: True - watch: #关注文件,如果发生变化就reload(reload是true) - file: /etc/httpd/conf/confd.conf /etc/httpd/conf/confd.conf file.manageed: - source: salt:// #文件来源 - user: root - group: root - mode: 644 - backup: minion #备份
九、根据需求自定义模块
查看支持的模块:salt '*' sys.list_modules