我有一些主机/用户的名单:
myhos1:
host: 192.168.1.1
user: foouser
myhost2:
host: 192.168.1.2
user: bazuser
现在在状态文件中我想使用名册中的用户名来做事情,例如
Install VNC script:
file.managed:
- name: /home/<user>/test.sh
- source: salt://files/test.sh
- user: <user>
- group: <user>
如何使用模板语言将<user>
替换为我将状态应用到的主机的实际用户ID?
如果我能以某种方式直接访问名册中的信息会很好,但我没有找到任何可以在相关文档页面中起作用的内容。
答案 0 :(得分:1)
你有两个我能想到的选择。
如果您的用户不多,最简单的选择就是使用jinja循环遍历列表
{% for user in ['foouser', 'bazuser'] %}
/home/{{ user }}/test.sh:
file.managed:
- source: salt://files/test.sh
- user: {{ user }}
- group: {{ user }}
{% endfor %}
或者您应该能够使用cmd.run
来获取用户列表:
{% for user in salt['cmd.run']('ls /home/').split('\n') %}
... snipped
{% endfor %}
我已经测试了上述内容,它对我有用。