zoukankan      html  css  js  c++  java
  • SaltStack匹配target-第六篇

    练习内容

    Salt远程执行中目标选择常用的模式

    1.通配符匹配

    2.正则表达式匹配

    3.List支持

    4.Grains匹配

    5.IP地址匹配

    6.混合匹配

    7.Node groups

    远程执行格式

    target就是我们要选择的minion
    salt '<target>' <function> [arguments]
    一,通配符匹配,支持minon_id
    [root@linux-node1 salt]# salt "*" test.ping
    linux-node1.example.com:
        True
    linux-node2.example.com:
        True
    [root@linux-node1 salt]# salt "*node1*" test.ping
    linux-node1.example.com:
        True
    二,正则表达式,同样也支持在状态文件里面使用
    [root@linux-node1 salt]# salt -E "linux-node[0-1].example.com" test.ping
    linux-node1.example.com:
        True
    [root@linux-node1 salt]# salt -E "linux-node[0-2].example.com" test.ping
    linux-node1.example.com:
        True
    linux-node2.example.com:
        True
    三,List支持
    [root@linux-node1 salt]# salt -L "linux-node1.example.com,linux-node2.example.com" "test.ping"
    linux-node2.example.com:
        True
    linux-node1.example.com:
        True
    四,Grains匹配
    [root@linux-node1 salt]# salt -G 'os:CentOS' test.ping
    linux-node1.example.com:
        True
    linux-node2.example.com:
        True
    
    [root@linux-node1 salt]# salt -G 'cpuarch:x86_64' test.ping
    linux-node1.example.com:
        True
    linux-node2.example.com:
        True
    五,IP地址匹配
    root@linux-node1 salt]# salt -S "192.168.56.0/255.255.255.0" test.ping  #注意不支持 255.255.255.0子网掩码写法
    No minions matched the target. No command was sent, no jid was assigned.
    ERROR: No return received
    [root@linux-node1 salt]# salt -S "192.168.56.0/24" test.ping
    linux-node1.example.com:
        True
    linux-node2.example.com:
        True
    [root@linux-node1 salt]# salt -S "192.168.56.11" test.ping
    linux-node1.example.com:
        True
    六,混合匹配(不建议使用,看起来有些乱)
    [root@linux-node1 salt]# salt -C 'S@192.168.56.11 or E@linux-node[0-2].example.com' test.ping
    linux-node1.example.com:
        True
    linux-node2.example.com:
        True
    七,Node groups方式需要写在Master配置文件里面,不需要重启salt-master服务就生效

    对目标服务器分组有以下七种方式,这七种方式的标示符分别为:

    1. G -- 针对 Grains 做单个匹配,例如:G@os:Ubuntu
    2. E -- 针对 minion 针对正则表达式做匹配,例如:E@webd+.(dev|qa|prod).loc
    3. P -- 针对 Grains 做正则表达式匹配,例如:P@os:(RedHat|Fedora|CentOS)
    4. L -- 针对 minion 做列表匹配,例如:L@minion1.example.com,minion3.domain.com or bl*.domain.com
    5. I -- 针对 Pillar 做单个匹配,例如:I@pdata:foobar
    6. S -- 针对子网或是 IP 做匹配,例如:S@192.168.1.0/24 or S@192.168.1.100
    7. R -- 针对客户端范围做匹配,例如: R@%foo.bar
    nodegroups:
      group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
      group2: 'G@os:Debian and foo.domain.com'
      group3: 'G@os:Debian and N@group1'

    有时候因为minion的版本问题是要nodegroups会报错如下

    [DEBUG   ] Passing on saltutil error. This may be an error in saltclient. 'retcode'

    这时候可以升级minion客户端解决问题

    yum install https://repo.saltstack.com/yum/redhat/salt-repo-2017.7-1.el7.noarch.rpm #安装最新的源

    升级minion客户端,重启minion就可以解决问题

    yum install salt-minion -y

    总结

    1.混合匹配不建议使用,看起来有些乱

    2.List模式在平时维护的时候用的少,但是在二次开发建议用Grains采集到数据,然后select拼接成list再调用后端api去执行

    3.控制并发可以使用 batch size,简写 -b 如果是1就串行,也支持百分比如 -b 50%

    [root@linux-node1 salt]# salt '*' -b 1 test.ping
    
    Executing run on ['linux-node2.example.com']
    
    linux-node2.example.com:
        True
    retcode:
        0
    
    Executing run on ['linux-node1.example.com']
    
    linux-node1.example.com:
        True
    retcode:
        0

    百分比使用方法

    [root@linux-node1 salt]# salt '*' -b 50%  test.ping
    
    Executing run on ['linux-node2.example.com']
    
    linux-node2.example.com:
        True
    retcode:
        0
    
    Executing run on ['linux-node1.example.com']
    
    linux-node1.example.com:
        True
    retcode:
        0

    附:英文参考文档

    https://www.unixhot.com/docs/saltstack/topics/tutorials/modules.html#target

    https://www.unixhot.com/docs/saltstack/topics/targeting/index.html

  • 相关阅读:
    在 Windows 上测试 Redis Cluster的集群填坑笔记
    vmware安装黑苹果教程
    微信支付v3发布到iis时的证书问题
    Linux下安装SQL Server 2016(连接篇SQL Server on linux)
    Linux下安装SQL Server 2016(连接篇SQL Server on linux)
    Linux下安装SQL Server 2016(安装篇SQL Server on linux)
    Linux下安装SQL Server 2016(准备篇SQL Server on linux)
    客服端与服务端APP支付宝支付接口联调的那些坑
    ASP.NET MVC]WebAPI应用支持HTTPS的经验总结
    .net平台下C#socket通信(中)
  • 原文地址:https://www.cnblogs.com/xiewenming/p/7711977.html
Copyright © 2011-2022 走看看