如何访问状态文件中的角色主机列表?

如何访问状态文件中的角色主机列表?

我通过定义角色来使用 salt,将状态列表映射到要应用这些状态的主机列表:

#/srv/pillar/base/top.sls:
{% set h = 'host1, host2,' %}
'L@{{ h }}':
    - roles.Servers

{% set h = 'host3, host4,' %}
'L@{{ h }}':
    - roles.newServers    
    
#/srv/salt/base/top.sls: 
base:
  'role:Server': # Mapping a host to a role can be found in: /srv/pillar/top.sls
    - match: pillar
    - mystate1         # "shared" statefile
    - mystate2

  'role:newServer':
    - match: pillar
    - mystate1         # "shared" statefile
    - mystate3

现在,在类似下面的 mystate1.sls 的状态下,我想对状态所起的作用做出一些改变,这应该取决于从选择 minion 的角色中得到的主机列表。

# /srv/salt/base/mystate1.sls
newPkg:
  pkg.installed:
    - pkgs:
{% if  grains['id'] in roles[ 'Server' ] %}  # pseude code: check if 'id' is in hostlist for role 'Server'
    - mypackage1    # do this if the current host is in the hostlist of role 'Servers'
{% else %}
    - myNewPackage  # do that if the host is part of role 'newServers'
{% endif %}    

因此,我想要检查被调用状态的 minion 的状态,看看该 minion 是否属于角色“Server”或“newServer”的主机列表。

任何想法?

答案1

两个主要选项。第一:

{% if salt["match.pillar"]("role:Server") %}

其次,如果角色定义为单个值:

{% if pillar["role"] == 'Server' %}

或者如果它是一个列表:

{% if 'Server' in pillar["role"] %}

相关内容