我有一个问题,即一个仆从没有获取两个支柱信息来源,而只是选择了最后一个来源。例如,以下是我的/srv/pillar/top.sls:
base:
'client.id':
- users.support
- users.dev
我的/srv/pillar/users/support.sls的内容如下:
users:
- name: supportname
fullname: Name of Support user
uid: 1001
groups:
- sudo
- support
我的/srv/pillar/users/dev.sls的内容如下:
users:
- name: devname
fullname: Name of Dev user
uid: 1002
groups:
- dev
调用salt 'client.id' pillar.items
时,它只显示最后指定的支柱(对于此示例,仅显示dev信息)。如果我要切换订单,则会显示相反的内容。我真的很难过可能导致这种情况的原因。
非常感谢任何帮助。
非常感谢,
大卫
答案 0 :(得分:1)
目前,SaltStack对支柱的合并策略有限[1]。在您的情况下,users
键被定义为列表。列表不能合并为支柱,因此最后解析的支柱会获胜。这就是你所看到的。
但是,如果密钥不同,则会合并dicts。您可以根据需要使用它:
/srv/pillar/users/support.sls:
users:
supportname:
fullname: Name of Support user
uid: 1001
groups:
- sudo
- support
/srv/pillar/users/dev.sls:
users:
devname:
fullname: Name of Dev user
uid: 1002
groups:
- dev
您将以users
字典结尾,其中包含两个条目:supportname
和devname
。然后,您可以使用for username, userdef in salt['pillar.get']('users', {}).iteritems()
循环播放它,例如。
[1] https://docs.saltstack.com/en/latest/topics/pillar/#pillar-namespace-merges