salt数据同步方式
方式一:
minion自动向master进行数据同步:
默认是60秒自动同步一次数据
自动同步时间间隔由参数loop_interval来决定(minion端)
[root@scj salt]# grep loop_interval /etc/salt/minion
# The loop_interval sets how long in seconds the minion will wait between
#loop_interval: 60
如果我们想让minion永远不要自动同步,可以把这个参数值改大一点
loop_interval: 3153600000 (设置100年同步一次)
方式二:
master端通过执行命令进行数据同步:
检测配置是否正确,并没有真正的推送数据:
salt '*' state.highstate -v test=true
salt '*' state.highstate -v test=True
注意:远程执行命令时 -v test=true 参数是不起作用的
salt "*" cmd.run "yum -y install man" -v test=true (minion机仍然会安装man软件包,远程执行命令时没有必要检测)
向所有minion推送所有数据:
salt '*' state.highstate
向某一台minion推送所有数据:
salt '192.168.186.129' state.highstate
向某一个分组推送所有数据:
salt -N 'BJwebgroup' state.highstate
向所有minion只推送web这个模块目录的数据
salt '*' state.sls web
注意:
[root@scj salt]# cat top.sls
base:
'BJwebgroup':
- match: nodegroup
- web
向所有minion只推送web模块下面的httpd.sls文件:
salt '*' state.sls web.httpd
注意:
[root@scj web]# pwd
/srv/salt/web
[root@scj web]# ls
files httpd.sls init.sls
向所有minion只推送web模块下面php目录下面的conf.sls文件:
salt '*' state.sls web.php.conf
注意:
[root@scj php]# pwd
/srv/salt/web/php
[root@scj php]# ls
conf.sls
向所有minion直接执行某个命令:
salt "*" cmd.run "yum -y install man"
附加:
salt常用命令:
salt '*' grains.ls 查看grains所有分类
salt '*' grains.items 查看grains所有信息
salt '*' grains.item os 查看grains某个分类信息
salt '*' pillar.items 查看pillar所有信息
salt '*' pillar.item users 查看pillar某个信息
[root@scj salt]# salt '*' grains.item os
192.168.186.129:
----------
os:
CentOS
[root@scj salt]# salt '*' grains.item fqdn
192.168.186.129:
----------
fqdn:
scj.51.com
[root@scj salt]# salt '*' grains.item host
192.168.186.129:
----------
host:
scj
salt '匹配正则' state.highstate 匹配正则
[root@scj salt]# salt '*' state.highstate
salt -N 'GroupName' state.highstate 指定某个组
[root@scj salt]#salt -N 'BJwebgroup' state.highstate
salt -L 'minion1,minion2,minion3' state.highstate 指定多个minion
[root@scj salt]# salt -L '192.168.186.129,192.168.186.128' state.sls web.php.conf
salt -G 'os:CentOS' test.ping 指定操作系统是CentOS的所有minion
salt-cp "*" /root/file1 /tmp/ (远程复制:将master机上 /root/file1 复制到minion机的 /tmp/ 目录下)
salt '*' cmd.script /usr/local/script/iptables.sh (执行某个脚本,这个脚本在master机上)
salt '*' cmd.run 'hostname' (对minion机远程执行某个命令)
[root@dbm133 ~]# salt '*' cp.get_file salt://web/httpd/httpd.sls /tmp/httpd.sls
[root@dbm133 ~]# salt '*' cp.get_dir salt://web/httpd /tmp/ ##把httpd目录拷贝到/tmp下
cp.get_file可以用来在minion端下载master上的文件。 salt '*' cp.get_file salt://vimrc /etc/vimrc 这个会通知所有的minion客户端来下载vimrc文件到/etc/vimrc salt '*' cp.get_file "salt://`grains`.`os`/vimrc" /etc/vimrc template=jinja 也可以用模版,表示只在OS系统名称一样的机器上下载文件 salt '*' cp.get_file salt://vimrc /etc/vimrc gzip=5 salt在传输大文件时还支持压缩:压缩比率是1-9 salt '*' cp.get_file salt://vimrc /etc/vim/vimrc makedirs=True cp.get_file默认是不会创建目的端的目录的,如果该目录不存在的时候。要改变这种情况可以使用mkaedirs参数 salt '*' cp.get_dir salt://etc/apache2 /etc salt '*' cp.get_dir salt://etc/`pillar`.`webserver` /etc gzip=5 template=jinja cp.get_dir和cp.get_file一样,不过get_dir是用来下载整个目录的,也支持模版和压缩
注意:使用cp.get_file从master拷贝文件到客户端,使用cp.get_dir拷贝目录到客户端
拷贝的文件或目录必须在salt配置的根目录下,即:/srv/salt
把文件拷到客户端/tmp目录下,必须写成/tmp/httpd.sls,完整路径文件
转载于:https://blog.51cto.com/732233048/1640990