SaltStack 使用 * 来定位 minions

SaltStack 使用 * 来定位 minions

我在 Linux 机器上使用 SaltStack,想要定义节点组。我了解复合匹配和 minion 列表等。

这正是我需要的,而且它是这样工作的,但是在有大量服务器的情况下很难维护

nodegroups:
  group1: 'srv1,srv2,srv3,srv4,dev1,dev2,stage1,stage2'
  

为了简单起见,我尝试这样定义它们:

nodegroups:
  group1: 'srv*,dev*,stage*'

但我找不到正确的方法。有什么想法吗?

-=编辑=-

我试过丹·加思韦特的解决方案,但不起作用。我甚至在我的私人开发服务器上尝试过,该服务器安装了 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*(作为示例)。

答案1

您应该使用或来连接它们,如下所示:

nodegroups:
    group1: 'srv* or dev* or stage*'

salt -C 'srv* or dev* or stage*' test.ping

在我的计算机上测试过。

答案2

节点组使用如下定义的复合匹配:

http://docs.saltstack.com/en/latest/topics/targeting/compound.html

你的答案是:

nodegroups:
  group1: L@srv*,dev*,stage*

请记住,您还可以使用谷物和/或柱子通过复合匹配器来瞄准小兵。

答案3

我现在用谷物做了。我只是加了

grains:
  group: groupname

在我的 minion 上的 /etc/salt/minion.d/minion.conf 中。这并不是我真正想要的,因为这定义了 minion 在 minion 端获得哪些角色,从安全角度来看这不是最佳选择(此外,在 master 上定义所有组会更方便。)

积极的一面是,我可以将不属于任何组的服务器的粒度设置为未定义,这样就更容易获取所有未定义服务器的列表。

谢谢你的帮助。我会让它保持未解决状态,因为它并没有真正解决(如果有人知道如何在主服务器上执行此操作,请告诉我)

相关内容