80327065 2019-12-23
一、简介
二、部署
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: ‘,op-test-108‘
group1: ‘,bar.domain.com,baz.domain.com or bl*.domain.com‘
group2: ‘:Debian and foo.domain.com‘
group3: ‘:Debian and ‘
group4:
- ‘:bar‘
- ‘or‘
- ‘: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