剑客
关注科技互联网

salt命令指定minions的方式

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!

出处: 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文件中:

'*.salt-cookbook.com':
 -group
 -user

2. Lists

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

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

在Top文件中:

'prddc1mon01,prddc2mon05':
 - match:list
 -hostconfig

3. Regular expressions

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

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

在Top文件中:

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

4. Grains

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

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

在Top文件中:

'server_type:app':
 - match:grain
 -tomcat

5. Subnet/IP

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

salt –S 10.0.0.0/24 state.sls user

在Top文件中:

'10.0.0.0/24':
 - match:ipcidr
 -dns

6. Pillar

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

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

在Top文件中:

'app_user:stg-app':
 - match:pillar
 -postgres

7. 基于Grains的正则

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

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

在Top文件中:

'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文件中:

'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文件中:

'prodmon':
 - match:nodegroup
 -monitoring

配置nodegroups

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

nodegroups.conf
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。

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址