设为首页 收藏本站
查看: 896|回复: 0

[经验分享] saltstack (2) 常用模块

[复制链接]

尚未签到

发表于 2018-7-31 10:58:13 | 显示全部楼层 |阅读模式
  1、crontab模块
  [root@redis01-jp ~]# salt 'redis02-jp' cron.raw_cron root      查看指定用户的计划任务
  redis02-jp:
  [root@redis01-jp ~]# salt 'redis02-jp' cron.set_job root '55' '14' '*' '*' '*' '/bin/echo "xxx" > /tmp/test.log'   创建任务
  redis02-jp:
  new
  [root@redis01-jp ~]# salt 'redis02-jp' cron.raw_cron root     再次查看任务
  redis02-jp:
  # Lines below here are managed by Salt, do not edit
  55 14 * * * /bin/echo "xxx" > /tmp/test.log
  [root@redis01-jp ~]# salt 'redis02-jp'  cron.rm_job root '/bin/echo "xxx" > /tmp/test.log'      删除任务
  redis02-jp:
  removed
  [root@redis01-jp ~]# salt 'redis02-jp' cron.raw_cron root        再次查看任务
  redis02-jp:
  # Lines below here are managed by Salt, do not edit
  [root@redis01-jp ~]#
  2、远程运行命令cmd.run模块和名称解析dnsutil模块
  [root@redis01-jp ~]# salt 'redis02-jp' cmd.run 'cat /etc/hosts'
  redis02-jp:
  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  ::1         localhost6 localhost6.localdomain6
  172.31.24.139 redis01-jp
  172.31.24.140 redis02-jp
  172.31.24.141 redis03-jp
  [root@redis01-jp ~]# salt 'redis02-jp' dnsutil.hosts_append /etc/hosts 1.1.1.1 www.example_salt.com  添加本地解析条目
  redis02-jp:
  The following line was added to /etc/hosts:
  1.1.1.1 www.example_salt.com
  [root@redis01-jp ~]# salt 'redis02-jp' cmd.run 'cat /etc/hosts'     查看/etc/hosts
  redis02-jp:
  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  ::1         localhost6 localhost6.localdomain6
  172.31.24.139 redis01-jp
  172.31.24.140 redis02-jp
  172.31.24.141 redis03-jp
  1.1.1.1 www.example_salt.com
  [root@redis01-jp ~]# salt 'redis02-jp' dnsutil.hosts_remove /etc/hosts www.example_salt.com  删除本地解析条目
  redis02-jp:
  None
  [root@redis01-jp ~]# salt 'redis02-jp' cmd.run 'cat /etc/hosts'     再次查看/etc/hosts
  redis02-jp:
  127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  ::1 localhost6 localhost6.localdomain6
  172.31.24.139 redis01-jp
  172.31.24.140 redis02-jp
  172.31.24.141 redis03-jp
  [root@redis01-jp ~]#
  3、网络模块network
  [root@redis01-jp ~]# salt 'redis02-jp' network.dig www.qq.com   名称解析
  redis02-jp:
  ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.51.amzn1 <<>> www.qq.com
  ;; global options: +cmd
  ;; Got answer:

  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR,>  ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
  ;; QUESTION SECTION:
  ;www.qq.com.INA
  ;; ANSWER SECTION:
  www.qq.com.60INCNAMEqq.com.edgesuite.net.
  qq.com.edgesuite.net.60INCNAMEa1574.b.akamai.net.
  a1574.b.akamai.net.11INA96.17.151.16
  a1574.b.akamai.net.11INA96.17.151.18
  ;; Query time: 5 msec
  ;; SERVER: 172.31.0.2#53(172.31.0.2)
  ;; WHEN: Mon Dec 19 07:24:33 2016

  ;; MSG>  [root@redis01-jp ~]# salt 'redis02-jp' network.ping www.baidu.com    网络连通性测试
  redis02-jp:
  PING www.a.shifen.com (103.235.46.39) 56(84) bytes of data.
  64 bytes from 103.235.46.39: icmp_seq=1 ttl=50 time=84.0 ms
  64 bytes from 103.235.46.39: icmp_seq=2 ttl=50 time=84.1 ms
  64 bytes from 103.235.46.39: icmp_seq=3 ttl=50 time=84.1 ms
  64 bytes from 103.235.46.39: icmp_seq=4 ttl=50 time=84.9 ms
  --- www.a.shifen.com ping statistics ---
  4 packets transmitted, 4 received, 0% packet loss, time 3003ms
  rtt min/avg/max/mdev = 84.068/84.321/84.935/0.459 ms
  [root@redis01-jp ~]# salt 'redis02-jp' network.traceroute www.qq.com      网络路径跟踪测试
  ......
  [root@redis01-jp ~]# salt 'redis02-jp' network.hwaddr eth0          查看MAC地址
  redis02-jp:
  06:cf:b1:b8:61:bf
  [root@redis01-jp ~]# salt 'redis02-jp' network.in_subnet 172.31.0.0/16     测试接口所在子网
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' network.interfaces       查看指定机器的网络接口
  [root@redis01-jp ~]# salt 'redis02-jp' network.ip_addrs          查看指定机器的IP地址
  redis02-jp:
  - 172.31.24.141
  [root@redis01-jp ~]# salt 'redis02-jp' network.subnets            查看指定机器的子网网段
  redis02-jp:
  - 172.31.16.0/20
  [root@redis01-jp ~]#
  4、复制模块cp
  [root@redis01-jp ~]# salt 'redis02-jp' cp.get_file salt://files/file1 /tmp/file1    文件复制
  redis02-jp:
  /tmp/file1
  [root@redis01-jp ~]# salt 'redis02-jp' cp.get_file salt://files/file2 /tmp/file2
  redis02-jp:
  /tmp/file2
  [root@redis01-jp ~]# ls /srv/salt/files/
  file1  file2  file3
  [root@redis01-jp ~]#
  [root@redis01-jp ~]# salt 'redis02-jp' cp.get_dir salt://files  /tmp/         #将主控端file_roots指定位置下的目录复制到被控主机/tmp/目录下
  redis02-jp:
  - /tmp//files/file1
  - /tmp//files/file2
  - /tmp//files/file3
  [root@redis01-jp ~]#
  [root@redis01-jp ~]# salt '*' cp.get_url http://www.slashdot.ort /tmp/index.html   #下载URL内容到被控主机指定位置(/tmp/index.html)
  [root@redis01-jp ~]# salt '*' cp.get_file salt://vimrc /etc/vimrc gzip=5    #传输时压缩文件
  Valid values are integers from 1 to 9, where 1 is the lightest compression and 9 the heaviest. In other words, 1 uses the least CPU on the master (and minion), while 9 uses the most.
  [root@redis01-jp ~]# salt '*' cp.get_file salt://vimrc /etc/vim/vimrc makedirs=True    #如果没有目标目录,则创建
  5、文件操作模块file
  参考:http://docs.saltstack.cn/ref/modules/all/salt.modules.file.html#module-salt.modules.file
  [root@redis01-jp ~]# salt 'redis02-jp' file.get_sum /etc/fstab md5   # 查看文件md5值
  redis02-jp:
  44c60b006413b0fc1b98c061d4b339ff
  [root@redis01-jp ~]# salt 'redis02-jp' file.check_hash /etc/fstab md5:'44c60b006413b0fc1b98c061d4b339ff'
  redis02-jp:
  True
  [root@redis01-jp ~]#
  [root@redis01-jp ~]# salt 'redis02-jp' file.chown /tmp/file1 push push  #修改文件属主、属组
  redis02-jp:
  None
  [root@redis01-jp ~]# salt 'redis02-jp' cmd.run 'ls -l /tmp/file1'
  redis02-jp:
  -rw-r--r-- 1 push push 0 Dec 19 04:12 /tmp/file1
  [root@redis01-jp ~]#
  [root@redis01-jp ~]# salt 'redis02-jp' file.copy /etc/passwd /tmp/passwd    #远程主机复制文件
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' cmd.run 'ls /tmp/passwd'
  redis02-jp:
  /tmp/passwd
  [root@redis01-jp ~]# salt 'redis02-jp' file.file_exists /tmp/passwd    #测试文件是否存在
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' file.directory_exists /tmp/files   # 测试目录是否存在
  redis02-jp:
  True
  [root@redis01-jp ~]#
  [root@redis01-jp ~]# salt 'redis02-jp' file.stats /tmp/passwd     #查看文件meta信息
  redis02-jp:
  ----------
  atime:
  1482131501.34
  ctime:
  1482131501.34
  gid:
  0
  group:
  root
  inode:
  281103
  mode:
  0644
  mtime:
  1482131501.34

  >  1321
  target:
  /tmp/passwd
  type:
  file
  uid:
  0
  user:
  root
  [root@redis01-jp ~]# salt 'redis02-jp' file.access /etc/passwd r      #测试文件是否有r权限
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' file.access /etc/passwd x      #测试文件是否有x权限
  redis02-jp:
  False
  [root@redis01-jp ~]#
  [root@redis01-jp ~]# salt 'redis02-jp' file.get_mode /tmp/passwd      #查看文件权限
  redis02-jp:
  0644
  [root@redis01-jp ~]# salt 'redis02-jp' file.set_mode /tmp/passwd 755   #设置文件权限
  redis02-jp:
  0755
  [root@redis01-jp ~]# salt 'redis02-jp' file.mkdir /tmp/dir1   #创建目录
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' file.sed /tmp/passwd 'push' 'work'     #替换文件内容
  redis02-jp:
  ----------
  pid:
  4621
  retcode:
  0
  stderr:
  stdout:
  [root@redis01-jp ~]# salt 'redis02-jp' cmd.run 'tail -1 /tmp/passwd'
  redis02-jp:
  work:x:501:501::/home/work:/bin/bash
  [root@redis01-jp ~]# salt 'redis02-jp' file.append /tmp/passwd 'saltstack file append test'  #追回文件内容
  redis02-jp:
  Wrote 1 lines to "/tmp/passwd"
  [root@redis01-jp ~]# salt 'redis02-jp' cmd.run 'tail -2 /tmp/passwd'
  redis02-jp:
  work:x:501:501::/home/work:/bin/bash
  saltstack file append test
  [root@redis01-jp ~]# salt 'redis02-jp' file.remove /tmp/file1   # 可以删除指定文件
  redis02-jp:
  True
  [root@redis01-jp ~]#
  [root@redis01-jp ~]# salt 'redis02-jp' file.remove /tmp/dir1    #可以删除空目录
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' file.remove /tmp/files    # 可以删除非空目录
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' file.contains /etc/passwd 'push'    # 测试文件中是否包含push字符串
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' file.contains /etc/passwd 'work'
  redis02-jp:
  False
  [root@redis01-jp ~]#
  [root@redis01-jp ~]# cp /etc/passwd /srv/salt/files/
  [root@redis01-jp ~]# salt 'redis02-jp' file.get_diff /etc/passwd salt://files/passwd   #比较文件内容差异
  redis02-jp:
  --- /etc/passwd
  +++ salt://files/passwd
  @@ -23,6 +23,3 @@
  sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  dbus:x:81:81:System message bus:/:/sbin/nologin
  ec2-user:x:500:500:EC2 Default User:/home/ec2-user:/bin/bash
  -apache:x:48:48:Apache:/var/www:/sbin/nologin
  -nginx:x:498:497:Nginx web server:/var/lib/nginx:/sbin/nologin
  -push:x:501:501::/home/push:/bin/bash
  [root@redis01-jp ~]#
  [root@redis01-jp ~]# salt 'redis02-jp' file.grep /etc/passwd push    #过滤内容
  redis02-jp:
  ----------
  pid:
  5124
  retcode:
  0
  stderr:
  stdout:
  push:x:501:501::/home/push:/bin/bash
  [root@redis01-jp ~]#
  6、包管理模块pkg与服务管理模块service
  [root@redis01-jp ~]# salt 'redis02-jp' pkg.install php      #安装指定的软件包
  redis02-jp:
  ----------
  compat-gmp4:
  ----------
  new:
  4.3.2-1.14.amzn1
  old:
  httpd:
  ----------
  new:
  2.2.31-1.8.amzn1
  old:
  php:
  ----------
  new:
  5.3.29-1.8.amzn1
  old:
  php-cli:
  ----------
  new:
  5.3.29-1.8.amzn1
  old:
  php-common:
  ----------
  new:
  5.3.29-1.8.amzn1
  old:
  [root@redis01-jp ~]#
  [root@redis01-jp ~]# salt 'redis02-jp' pkg.remove nginx   #卸载包
  redis02-jp:
  ----------
  [root@redis01-jp ~]# salt 'redis02-jp' pkg.upgrade   #系统更新
  [root@redis01-jp ~]# salt 'redis02-jp' service.enable httpd    #设置服务开机自启动
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' service.disable httpd   #禁止服务开机自启动
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' service.start httpd     #启动服务
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' service.reload httpd
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' service.restart httpd
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' service.status httpd
  redis02-jp:
  True
  [root@redis01-jp ~]# salt 'redis02-jp' service.stop httpd
  redis02-jp:
  True
  [root@redis01-jp ~]#

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-544058-1-1.html 上篇帖子: saltstack (1) 简介 下篇帖子: saltstack (4) 用mysql存储 salt 返回值
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表