我在我的 linux 机器上使用 SaltStack 并想定义节点组。我知道复合匹配和仆从列表等。
这就是我所需要的,它以这种方式工作,但是使用大量服务器很难维护
nodegroups:
group1: 'srv1,srv2,srv3,srv4,dev1,dev2,stage1,stage2'
为了简单起见,我试图以这种方式定义它们:
nodegroups:
group1: 'srv*,dev*,stage*'
但我找不到正确的方法。有任何想法吗?
-=编辑=-
我尝试了Dan Garthwaite的解决方案,但没有奏效。我什至在安装了 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.
我认为您不能在列表中使用通配符,但我不知道如何将盐用于目标 dns* 和 apach*(例如)。
您应该使用或连接它们,如下所示:
在我的机器上测试。
节点组使用此处定义的复合匹配:
http://docs.saltstack.com/en/latest/topics/targeting/compound.html
你的答案是:
请记住,您还可以使用颗粒和/或柱子通过复合匹配器来瞄准小兵。
我现在用谷物做的。我刚刚添加
在我的奴才的 /etc/salt/minion.d/minion.conf 中。这并不是我真正想要的,因为它定义了 minion 在 minion 端获得的角色,从安全角度来看这不是最佳的(另外,在 master 上定义所有组会更方便。)
从好的方面来说,我可以将不属于任何组的服务器的粒度设置为未定义,并且更容易获得所有未定义服务器的列表。
谢谢您的帮助。我会让这个问题保持未解决,因为它并没有真正解决(如果有人知道如何在主人身上做到这一点,请告诉我)