我在我的Linux机器上使用SaltStack,并想定义节点组。 我知道复合匹配和仆从名单等
这就是我所需要的,而且是这样工作的,但是很难用很多服务器来维护
nodegroups: group1: 'srv1,srv2,srv3,srv4,dev1,dev2,stage1,stage2'
为了简单起见,我试图用这种方式来定义它们:
nodegroups: group1: 'srv*,dev*,stage*'
但我找不到一个方法来做到这一点。 有任何想法吗?
我尝试了Dan Garthwaite的解决scheme,但没有奏效。 我甚至在安装了Salt版本2014.1.4的私人开发服务器上尝试过。 这是我得到的。
fmohr@salt-master:~$ sudo salt -v -C 'L@dns01,apache' test.ping Executing job with jid 20140708072832751715 ------------------------------------------- dns01: True apache: True
fmohr@salt-master:~$ sudo salt -v -C 'L@dns*,apache' test.ping Executing job with jid 20140708072837257646 ------------------------------------------- apache: True
fmohr@salt-master:~$ sudo salt -v -C 'L@dns*' test.ping No minions matched the target. No command was sent, no jid was assigned. fmohr@salt-master:~$ sudo salt -v -C 'L@dns*,apach*' test.ping No minions matched the target. No command was sent, no jid was assigned.
我不认为你可以在列表中使用通配符,但是我不知道如何获得salt来指定dns *和apach *(作为一个例子)。
你应该使用或连接它们,如下所示:
nodegroups: group1: 'srv* or dev* or stage*' salt -C 'srv* or dev* or stage*' test.ping
在我的机器上testing过。
节点组使用这里定义的复合匹配:
http://docs.saltstack.com/en/latest/topics/targeting/compound.html
你的答案是:
nodegroups: group1: L@srv*,dev*,stage*
请记住,您还可以使用谷物和/或支柱通过复合匹配器来定位小爪子。
我现在用谷物做了。 我刚刚添加
grains: group: groupname
在我的奴才/etc/salt/minion.d/minion.conf。 这并不是我想要的,因为它定义了仆从在仆从方面的angular色,从安全的angular度来看这不是最优的(再加上在主控上定义所有组会更方便)。
另外,我可以将不属于任何组的服务器设置为未定义的,并且更容易获得所有未定义服务器的列表。
谢谢您的帮助。 我会让这个问题没有解决,因为它没有真正解决(如果有人知道如何对主人这样做,请告诉我)