盐态不能与 pillardata 结合使用
Salt state not working in combination with pillardata
我有以下盐状态:
freeradius:
pkg.installed
radiusgroup:
group.present:
- name: radiusadm
- gid: 666
{% for user, args in pillar['users'].items() %}
{% if ( user not in pillar['absents'] ) and ( 'radiuspassword' in args ) %}
shadow_hash_{{ user }}:
user.present:
- name: {{ user }}
- password: {{ args['radiuspassword'] }}
{% endif %}
{% endfor %}
并拥有以下支柱
groups:
radiusd:
gid: 95
users:
user1:
radiuspassword: 'password1'
user2:
radiuspassword: 'password2'
absents:
a2user1:
a2user2:
我想让这段代码工作,我收到消息:
Data failed to compile:
State 'radiusgroup' in SLS 'radiusd' is not formed as a list
请告诉我如何从这里开始,提前谢谢你。
我认为问题出在 pillar
的声明中。 for
和 if
块中的状态文件缩进也可能会导致问题。该错误指出 radiusgroup
未形成为列表。所以我们应该形成一个列表 groups
.
示例支柱:
groups:
- name: radiusd
gid: 95
users:
- name: user1
radiuspassword: password1
- name: user2
radiuspassword: password2
absents:
- a2user1
- a2user2
请注意,我也对用户列表使用了类似的结构。然后我们可以将状态文件设为:
{% for group in pillar['groups'] %}
radiusgroup_{{ group.name }}:
group.present:
- name: {{ group.name }}
- gid: {{ group.gid }}
{% endfor %}
{% for user in pillar['users'] %}
{% if (user.radiuspassword is defined) and (user.name not in pillar['absents']) %}
shadow_hash_{{ user.name }}:
user.present:
- name: {{ user.name }}
- password: {{ user.radiuspassword }}
{% endif %}
{% endfor %}
如果 pillar
在您的控制之下,最好 完全 定义它。这样您就可以避免在状态文件中使用复杂的 Jinja 表达式。
我有以下盐状态:
freeradius:
pkg.installed
radiusgroup:
group.present:
- name: radiusadm
- gid: 666
{% for user, args in pillar['users'].items() %}
{% if ( user not in pillar['absents'] ) and ( 'radiuspassword' in args ) %}
shadow_hash_{{ user }}:
user.present:
- name: {{ user }}
- password: {{ args['radiuspassword'] }}
{% endif %}
{% endfor %}
并拥有以下支柱
groups:
radiusd:
gid: 95
users:
user1:
radiuspassword: 'password1'
user2:
radiuspassword: 'password2'
absents:
a2user1:
a2user2:
我想让这段代码工作,我收到消息:
Data failed to compile:
State 'radiusgroup' in SLS 'radiusd' is not formed as a list
请告诉我如何从这里开始,提前谢谢你。
我认为问题出在 pillar
的声明中。 for
和 if
块中的状态文件缩进也可能会导致问题。该错误指出 radiusgroup
未形成为列表。所以我们应该形成一个列表 groups
.
示例支柱:
groups:
- name: radiusd
gid: 95
users:
- name: user1
radiuspassword: password1
- name: user2
radiuspassword: password2
absents:
- a2user1
- a2user2
请注意,我也对用户列表使用了类似的结构。然后我们可以将状态文件设为:
{% for group in pillar['groups'] %}
radiusgroup_{{ group.name }}:
group.present:
- name: {{ group.name }}
- gid: {{ group.gid }}
{% endfor %}
{% for user in pillar['users'] %}
{% if (user.radiuspassword is defined) and (user.name not in pillar['absents']) %}
shadow_hash_{{ user.name }}:
user.present:
- name: {{ user.name }}
- password: {{ user.radiuspassword }}
{% endif %}
{% endfor %}
如果 pillar
在您的控制之下,最好 完全 定义它。这样您就可以避免在状态文件中使用复杂的 Jinja 表达式。