saltstack (2) 常用模块

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云解析 DNS,旗舰版 1个月
简介:

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, id: 43004

    ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

    ;; QUESTION SECTION:

    ;www.qq.com. IN A

    ;; ANSWER SECTION:

    www.qq.com. 60 IN CNAME qq.com.edgesuite.net.

    qq.com.edgesuite.net. 60 IN CNAME a1574.b.akamai.net.

    a1574.b.akamai.net. 11 IN A 96.17.151.16

    a1574.b.akamai.net. 11 IN A 96.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 SIZE  rcvd: 123

[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

    size:

        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 ~]#










本文转自 meteor_hy 51CTO博客,原文链接:http://blog.51cto.com/caiyuanji/1884455,如需转载请自行联系原作者
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章