什么没有 发表于 2018-8-1 08:16:48

saltstack管理六之数据同步方式和常用命令

  salt数据同步方式
  方式一:
  minion自动向master进行数据同步:
  默认是60秒自动同步一次数据
  自动同步时间间隔由参数loop_interval来决定(minion端)
  # 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
  注意:
  # cat top.sls
  base:
  'BJwebgroup':
  - match: nodegroup
  - web
  向所有minion只推送web模块下面的httpd.sls文件:
  salt '*' state.sls web.httpd
  注意:
  # pwd
  /srv/salt/web
  # ls
  fileshttpd.slsinit.sls
  向所有minion只推送web模块下面php目录下面的conf.sls文件:
  salt '*' state.sls web.php.conf
  注意:
  # pwd
  /srv/salt/web/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某个信息
  # salt '*' grains.item os
  192.168.186.129:
  ----------
  os:
  CentOS
  # salt '*' grains.item fqdn
  192.168.186.129:
  ----------
  fqdn:
  scj.51.com
  # salt '*' grains.item host
  192.168.186.129:
  ----------
  host:
  scj
  salt '匹配正则' state.highstate                           匹配正则
  # salt '*' state.highstate
  salt -N'GroupName'state.highstate                     指定某个组
  #salt -N 'BJwebgroup' state.highstate
  salt -L 'minion1,minion2,minion3' state.highstate         指定多个minion
  # 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机远程执行某个命令)
  # salt '*' cp.get_filesalt://web/httpd/httpd.sls/tmp/httpd.sls
  # salt '*' cp.get_dirsalt://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,完整路径文件
页: [1]
查看完整版本: saltstack管理六之数据同步方式和常用命令