salt命令指定minions的方式

目录
  1. 确定目标主机的方式
    1. 1. Globbing
    2. 2. Lists
    3. 3. Regular expressions
    4. 4. Grains
    5. 5. Subnet/IP
    6. 6. Pillar
    7. 7. 基于Grains的正则
    8. 8. 组合匹配
    9. 9. NodeGroup
  2. 配置nodegroups

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

上篇文章学习了salt state中的高级用法,本篇学习salt如何targeting minions,也就是salt如何定位目标主机。另外在定位主机时,有一种方法是通过nodegroups,后面再来学习一下如何配置nodegroups。

确定目标主机的方式

作为配置管理软件,首先要解决的是如何确定一次推送的主机,或者说特定配置的推送目标。下面就来看一下salt支持的匹配主机的方式:

1. Globbing

这是默认的匹配方式,可以使用linux shell风格的通配符:

salt '*.salt-cookbook.com' state.sls user

在Top文件中:

1
2
3
'*.salt-cookbook.com':
- group
- user

2. Lists

后接一串以逗号分隔的minion id列表,通过-L选项指定:

salt –L 'prddc1mon01,prddc2mon05' state.sls user

在Top文件中:

1
2
3
'prddc1mon01,prddc2mon05':
- match: list
- hostconfig

3. Regular expressions

即正则匹配方式,对象同样是minion id,通过-E选项指定:

salt -E 'dev-(dc1|dc2|dc3)-db' state.sls user

在Top文件中:

1
2
3
'dev-(dc1|dc2|dc3)-db':
- match: pcre
- mysql

4. Grains

基于grains数据的匹配,通过-G选项指定:

salt –G 'server_type:app' state.sls user

在Top文件中:

1
2
3
'server_type:app':
- match: grain
- tomcat

5. Subnet/IP

基于subnet/IP地址的匹配方式,通过-E选项指定:

salt –S 10.0.0.0/24 state.sls user

在Top文件中:

1
2
3
'10.0.0.0/24':
- match: ipcidr
- dns

6. Pillar

通过提供对某个minion可用的pillar键值对的方式进行匹配,通过-I选项指定:

salt –I 'app_user:stg-app' state.sls user

在Top文件中:

1
2
3
'app_user:stg-app':
- match: pillar
- postgres

7. 基于Grains的正则

与正则匹配方式类似,只不过是基于grains数据应用正则匹配,通过–grain-pcre选项指定:

salt –grain-pcre 'os:(RedHat|CentOS)' state.sls user

在Top文件中:

1
2
3
'os:(RedHat|CentOS) ':
- match: grain_pcre
- hostconfig

8. 组合匹配

这种匹配方式将上述不同的方式综合起来进行匹配,通过-C选项指定:

salt –C 'G@os:Ubuntu and \
S@172.32.0.0/24' pillar.item fqdn

在Top文件中:

1
2
3
'G@os:Ubuntu and S@172.32.0.0/24':
- match: compound
- hostconfig

9. NodeGroup

通过NodeGroup进行匹配,下一节介绍NodeGroup的配置,通过-N选项指定:

salt –N prodmon state.sls user

在Top文件中:

1
2
3
'prodmon':
- match: nodegroup
- monitoring

配置nodegroups

配置nodegroup可以在主配置文件/etc/salt/master将nodegroups的配置项取消注释,也可以在/etc/salt/maste.d文件夹下创建一个新的nodegroups.conf的配置文件,内容如下:

nodegroups.conf
1
2
3
4
nodegroups:
stgdb: 'G@environment:staging and G@server_type:db'
dc1devapp: 'G@location:dc1 and G@environment:development and G@server_type:app'
prodmon: 'L@prddc1mon01,prddc2mon03,prddc3mon10'

配置完成后重新启动salt-master的daemon来使配置生效。
上面的配置文件配置了三个组,组名分别为stgdb、dc1devapp和prodmon。组stgdb中包含所有具有指定grains数据的节点,grains的内容是通过后面指定的。它的格式与在top文件中指定匹配方式相同。

本篇了解了salt命令中指定minions的方式,下篇来了解一下salt的执行模块、state模块及salt runners。