1. 主机规划

Targeting Minions文档

https://docs.saltstack.com/en/latest/contents.html

另请参见:自动化运维神器之saltstack (三)节点组及复合匹配器

注意事项

修改了master或者minion的配置文件,那么必须重启对应的服务。

2. 目标指定方式

Letter

Match Type

Example

Alt Delimiter?

G

Grains glob

G@os:Ubuntu

Yes

E

PCRE Minion ID

E@web\d+\.(dev|qa|prod)\.loc

No

P

Grains PCRE

P@os:(RedHat|Fedora|CentOS)

Yes

L

List of minions

L@minion1.example.com,minion3.domain.com or bl*.domain.com

No

I

Pillar glob

I@pdata:foobar

Yes

J

Pillar PCRE

J@pdata:^(foo|bar)$

Yes

S

Subnet/IP address

S@192.168.1.0/24 or S@192.168.1.100

No

R

Range cluster

R@%foo.bar

No

Matchers can be joined using boolean andor, and not operators.  【复合匹配的时候】

2.1. 当前有哪些minion

 [root@salt100 ~]# salt '*' test.ping
salt02:
True
salt100:
True
salt03:
True
salt01:
True

3. 通过minion id匹配

3.1. 通配符匹配

在 top file 中也仍然适用。【推荐使用】

 # Match all minions:
salt '*' test.ping # Match all minions in the example.net domain or any of the example domains:
salt '*.example.net' test.ping
salt '*.example.*' test.ping # Match all the 「webN」 minions in the example.net domain (web1.example.net, web2.example.net … webN.example.net):
salt 'web?.example.net' test.ping # Match the 「web1」 through 「web5」 minions:
salt 'web[1-5]' test.ping # Match the 「web1」 and 「web3」 minions:
salt 'web[1,3]' test.ping # Match the 「web-x」, 「web-y」, and 「web-z」 minions:
salt 'web-[x-z]' test.ping

3.2. 正则表达式(-E)

使用较少,因为正则写错的几率会大些。

正则规则参见:

https://blog.csdn.net/woshizhangliang999/article/details/46859161
 # Match both 「web1-prod」 and 「web1-devel」 minions:
salt -E 'web1-(prod|devel)' test.ping

3.2.1. 在 top file 中的使用

 base:
'web1-(prod|devel)':
- match: pcre # 使用正则匹配
- webserver

3.3. 列表匹配(-L)

salt -L 'web1,web2,web3' test.ping  

4. 使用grains指定(-G)

 # For example, the following matches all CentOS minions:
salt -G 'os:CentOS' test.ping # Match all minions with -bit CPUs, and return number of CPU cores for each matching minion:
salt -G 'cpuarch:x86_64' grains.item num_cpus

4.1. 嵌套匹配【细粒度匹配】

 [root@salt100 ~]# salt -G 'ip_interfaces:eth0' test.ping
salt01:
True
salt02:
True
salt03:
True
salt100:
True
[root@salt100 ~]# salt -G 'ip_interfaces:eth0:*11*' test.ping
salt01:
True

5. 使用pillar指定(-I)

像grains匹配一样,也支持嵌套匹配。

 # 具体匹配
salt -I 'somekey:specialvalue' test.ping

5.1. 嵌套匹配【细粒度匹配】

 [root@salt100 ~]# salt -I 'level1:level2:my_user:*zhang*' test.ping
salt03:
True
salt02:
True

6. 子网/IP 地址匹配(-S)

 # Minions can easily be matched based on IP address, or by subnet
salt -S 172.16.1.11 test.ping # 具体地址
salt -S 172.16.1.0/ test.ping # 网段
salt -S fe80::20c:29ff:fe95:1b7a test.ping # IPv 具体配置
salt -S :db8::/ test.ping # IPv 网段配置

6.1. 用于复合匹配

 # Ipcidr matching can also be used in compound matches
salt -C 'S@10.0.0.0/24 and G@os:Debian' test.ping

6.2. 用于pillar和状态的top file匹配

 '172.16.0.0/12':
- match: ipcidr # 匹配方式
- internal

7. 复合匹配(-C)

Matchers can be joined using boolean andor, and not operators.  【复合匹配的时候】

 # the following string matches all 「Debian minions」 with a hostname that begins with 「webserv」, as well as any minions that have a hostname which matches the regular expression 「web-dc1-srv.* 」:
salt -C 'webserv* and G@os:Debian or E@web-dc1-srv.*' test.ping # Excluding a minion based on its ID is also possible:
salt -C 'not web-dc1-srv' test.ping # Versions prior to 2015.8. a leading 「not」 was not supported in compound matches. Instead, something like the following was required:
salt -C '* and not G@kernel:Darwin' test.ping # Excluding a minion based on its ID was also possible:
salt -C '* and not web-dc1-srv' test.ping

7.1. 在 top file 中的使用

 base:
'webserv* and G@os:Debian or E@web-dc1-srv.*':
- match: compound # 复合匹配
- webserver

7.2. 优先匹配

 # 可以使用括号实现优先匹配
# 一定要注意括号和目标之间需要「空格」。不遵守此规则可能导致错误的目标!
salt -C '( ms-1 or G@id:ms-3 ) and G@id:ms-3' test.ping

7.3. 替换分隔符

 # 默认为 「:」 改为其他字符分割
salt -C 'J|@foo|bar|^foo:bar$ or J!@gitrepo!https://github.com:example/project.git' test.ping

案例1

 [root@salt100 ~]# salt -C 'G@os:redhat03' test.ping
salt01:
True
[root@salt100 ~]#
[root@salt100 ~]# salt -C 'G|@os|redhat03' test.ping # 将分隔符从「:」 改为「|」
salt01:
True
[root@salt100 ~]# salt -C 'G!@os!redhat03' test.ping #将分隔符从「:」 改为「!」
salt01:
True
[root@salt100 ~]# salt -C 'G!@os!redhat03 or salt02' test.ping
salt02:
True
salt01:
True

案例2

 [root@salt-master- ~]# salt '*' pillar.item getos
10.0.0.112:
----------
getos:
----------
apache:
httpd
git:
git
172.16.1.111:
----------
getos:
----------
apache:
apache2:kkk
git:
git-core
salt-master-:
----------
getos:
----------
apache:
httpd
git:
git
[root@salt-master- ~]# salt -I 'getos:apache:apache2:kkk' test.ping
172.16.1.111:
True
[root@salt-master- ~]# salt -C 'I@getos:apache:apache2:kkk' test.ping # 因为有 apache2:kkk ,所以在某些情况下会出现错误
172.16.1.111:
True
[root@salt-master- ~]#
[root@salt-master- ~]# salt -C 'I#@getos#apache#apache2:kkk' test.ping # 表示使用 # 作为分隔符,而不是 :
172.16.1.111:
True

8. 节点组(-N)

备注:

 、当向主配置文件添加或修改节点组时,必须重新启动master,以便完全识别这些更改。
、在不重启的情况下,可以使用命令行中 -N 作为目标的有限功能。

8.1. /etc/salt/master 配置

 # The nodegroups master config file parameter is used to define nodegroups. Here's an example nodegroup configuration within 「/etc/salt/master」:
nodegroups:
group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
group2: 'G@os:Debian and foo.domain.com'
group3: 'G@os:Debian and N@group1'
group4:
- 'G@foo:bar'
- 'or'
- 'G@foo:baz' # As of the 2017.7. release of Salt, group names can also be prepended with a dash【破折号】. This brings the usage in line with many other areas of Salt. For example:
# 组节点也可以使用 如下方式。 组名前面到破折号「-」
nodegroups:
- group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com' 注意:
Nodegroups可以参考group3中看到的其他Nodegroups,确保没有循环引用。循环引用将被检测到,并导致部分扩展产生日志错误消息。
注意:
「N@」 不能在命令行和top file中使用,只能在master config 中使用

8.2. 命令行匹配

salt -N group1 test.ping

8.3. 在 top file 中的使用

 base:
group1:
- match: nodegroup # 使用节点组匹配
- webserver

8.4. 根据列表的minion IDs定义为节点组

 # 常规的定义方式
nodegroups:
group1: L@host1,host2,host3 # YAML 定义方式
nodegroups:
group1:
- host1
- host2
- host3

9. 批量大小(-b)

 # The 「-b」 (or 「--batch-size」) option allows commands to be executed on only a specified number of minions at a time.
# 同一时间执行多少 minion,支持百分比和数字。
salt '*' -b test.ping # 同一时间执行 台,完毕后执行另外 台,依次执行下去
salt '*' -b % test.ping # 同一时间执行 % 的minion 端,完毕后执行另外 %【实际是最后的 %】。
salt -G 'os:RedHat' --batch-size % apache.signal restart # # --batch-wait minion返回后,等待多少秒在发送命令给新的minion
salt '*' -b % --batch-wait test.ping # 第一批minion反馈后,等待 秒后,在发送命令给下一批的minion。

最新文章

  1. WebStorm 2016.2.3的安装与汉化
  2. MyEclipse黑色主题
  3. 《DSP using MATLAB》示例Example4.14
  4. 判断输入的数是否为数字,不使用isNaN
  5. PHP API 框架开发的学习
  6. 扩展User增加部门字段
  7. 再也不要说,jquery动画呆板了
  8. [搜片神器]使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)
  9. Fedora 下 安装 chrome
  10. HDU3400+三分
  11. Keil C51总线外设操作问题的深入分析
  12. VS2010对C++11的支持列表(感觉大部分都不支持)
  13. HDU4452Running Rabbits(模拟)
  14. Eclipse中Ctrl+Alt+Down和Ctrl+Alt+Up不起作用
  15. HDU5661 Claris and XOR
  16. SRD_PreloaderCore
  17. so插件化
  18. Spark学习之路 (三)Spark之RDD
  19. 生产环境nginx上传文件报错413 Request Entity Too Large
  20. NET 获取实例所表示的日期是星期几

热门文章

  1. 又拍云 API 使用的那些小事
  2. Javascript sort方法
  3. AspNetCore 基于流下载文件与示例代码
  4. 探索ASP.NET Core中的IStartupFilter
  5. windows git 上传
  6. LinkedHashMap为什么是有序的(与put先后顺序一致)
  7. nodejs接收get参数和post参数
  8. C语言实现二叉树中统计叶子结点的个数&度为1&度为2的结点个数
  9. PC逆向之代码还原技术,第二讲寻找程序入口点
  10. angr初使用(1)