新风花雪月 发表于 2018-7-31 14:05:15

自动化运维工具SaltStack - 分组(使用记录,groups)

  在使用 SaltStack 对主机进行批量管理的时候,因为不同的服务器组所做的业务功能不同,因此为了更加方便的管理,势必要对主机进行分组管理。
  因此就自己在分组使用的过程中有以下一点记录下。
  参考 SaltStack 的官方文档 4.4 Compound matchers 和 4.3. Node groups 知道,对目标服务器分组有以下七种方式,这七种方式的标示符分别为:

[*]  G -- 针对 Grains 做单个匹配,例如:G@os:Ubuntu
[*]  E -- 针对 minion 针对正则表达式做匹配,例如:E@web\d+.(dev|qa|prod).loc
[*]  P -- 针对 Grains 做正则表达式匹配,例如:P@os:(RedHat|Fedora|CentOS)
[*]  L -- 针对 minion 做列表匹配,例如:L@minion1.example.com,minion3.domain.com or bl*.domain.com
[*]  I -- 针对 Pillar 做单个匹配,例如:I@pdata:foobar
[*]  S -- 针对子网或是 IP 做匹配,例如:S@192.168.1.0/24 or S@192.168.1.100
[*]  R -- 针对客户端范围做匹配,例如: R@%foo.bar
  然后我自己在做分组的时候,尝试了下 L 是否可以使用正则表达式
尝试一:
   nodegroups:  
    #group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
  
    #group2: 'G@os:Debian and foo.domain.com'
  
       TEST1: 'L@JF1-TEST1-001,JF1-TEST1-002,JF-TEST1-0'
  执行命令 sudo salt -N TEST1 test.ping结果为:
JF1-TEST1-002:    TrueJF1-TEST1-001:    True  只会出现两台服务器,后面的不能匹配。
尝试二:
nodegroups:  
    #group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
  
    #group2: 'G@os:Debian and foo.domain.com'
  
       TEST1: 'L@JF1-TEST1-001,JF1-TEST1-002 or JF-TEST1-0'
  执行命令 sudo salt -N TEST1 test.ping结果为:
JF1-TEST1-002:    TrueJF1-TEST1-001:    TrueJF1-TEST1-003:    TrueJF1-TEST1-004:    TrueJF1-TEST1-006:    TrueJF1-TEST1-005:    True  结果是所有的都匹配成功了
尝试三
nodegroups:  
    #group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
  
    #group2: 'G@os:Debian and foo.domain.com'
  
       TEST1: 'L@JF-TEST1-0'
  执行结果为:
No minions matched the target. No command was sent, no jid was assigned.  表示没有匹配到任何一个
结论
  使用 L 列表的方式,必须把 minion 列出来,或者是列出几台后,在后面接 or 或者 and 表达式, or 或者 and 后面接的表达式后面可以使用正则表达式。
  注:想使用正则表达式,最好的方式就是使用 E
页: [1]
查看完整版本: 自动化运维工具SaltStack - 分组(使用记录,groups)