nodegroups
在实际使用过程中,根据业务需求,需对 minion 进行分组。
配置
- 在 master 配置文件 /etc/salt/master中 或
- 在 master 配置文件增加一行 default_include: master.d/*.conf 在/etc/salt/master/master.d 中配置
nodegroups:
  group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
  group2: 'G@os:Debian and foo.domain.com'
  
指定nodegroup
命令行
sudo salt -N group1 test.ping
top.sls
base:
  group1:
    - match: nodegroup
    - webserver
混合匹配
混合匹配是指在操作时使用多种预定义的匹配方法。默认匹配规则是glob. 在使用混合匹配时,需要先匹配前指定letter, 当前支持的“letter”有:
| Letter | 匹配类型 | 例子 | Alt Delimiter? | 
|---|---|---|---|
| G | Grains 单个匹配 | G@os:Ubuntu | Yes | 
| E | Minion id正则匹配 | E@web\d+.(dev|qa|prod).loc | No | 
| P | Grains 正则匹配 | P@os:(RedHat|Fedora|CentOS) | Yes | 
| L | minions列表 | L@minion1.example.com,minion3.domain.com or bl*.domain.com | No | 
| I | Pillar 单个匹配 | I@pdata:foobar | Yes | 
| J | Pillar 正则匹配 | J@pdata:^(foo|bar)$ | Yes | 
| S | 子网/IP地址匹配 | S@192.168.1.0/24 or S@192.168.1.100 | No | 
| R | Range cluster匹配 | R@%foo.bar | No | 
匹配可以加入and,or,not
命令行
例如,想匹配所有minion中主机名(minion id)以webserv开头并且运行在Debian系统上或者minion的主机名(minion id)匹配正则表达式web-dc1-srv.*:
salt -C 'webserv* and G@os:Debian or E@web-dc1-srv.*' test.ping
top.sls
base:
  'webserv* and G@os:Debian or E@web-dc1-srv.*':
    – match: compound
    – webserver
Grains匹配
- Grains 单个匹配
- Grains 正则匹配
设置Grains
在 minion 配置文件 /etc/salt/minion 或 /etc/salt/minion/minion.d 中配置
#minion
grains:
  roles:
    - webserver
    - memcache
  deployment: datacenter4
  cabinet: 13
  cab_u: 14-15
#master
nodegroups:
  group1: 'P@roles:(webserver|memcache)' #Grains 正则匹配
  group2: 'G@roles:webserver'            #Grains 单个匹配
minion id匹配
需要设置 minion id,默认是用 hostname
#master
nodegroups:
  group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'  #minions列表匹配
  group2: 'E@web\d+\.(dev|qa|prod)\.loc'                                      #Minion id正则匹配
设置minion id
最好是在服务启动之前设置好minion id,尽量避免服务启动后再修改minion id
- 修改minion配置文件
- 在机器初始化的时候设置hostname
修改minion id
#停止salt-minion服务
service salt-minion stop
#删除salt-minion公钥文件
rm /etc/salt/pki/minion/minion.pub
rm /etc/salt/pki/minion/minion.pem
#修改新minion_id
echo NewId > /etc/salt/minion_id
## 或
修改minion配置文件
#master上删除旧的key
salt-key -d oldId
#minion端重新启动salt-minion
service salt-minion start
Pillar 匹配
需要在 minion 上设置 pillar , minion 需要缓存 pillar ,在 minion 配置文件配置
minion_pillar_cache: True
#master
nodegroups:
  group1: 'I@pdata:foobar'                 #Pillar 单个匹配
  group2: 'J@pdata:^(foo|bar)$'            #Pillar 正则匹配
IP地址匹配
个别的IP,可能需要手动添加
#master
nodegroups:
  group1: 'S@192.168.1.0/24 or S@192.168.1.100'
###
