• 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

  • 相关阅读:
    绘画字符串
    方法名,类名与字符串之间的转换
    重写视图的点击区域
    ios7新特性
    常用的sq语句
    基于xmpp的ios聊天客户端(一)
    iOS真机测试,为Provisioning添加设备
    【IOS 开发】Object-C 运算符
    【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
    博客技术资料整理
  • 原文地址:https://www.cnblogs.com/xiewenming/p/7711977.html
Copyright © 2020-2023  润新知