访问列出的粒度值

Access listed grain values

我正在尝试从状态文件中访问列出的粒度值,需要这方面的帮助。

状态文件如下

{% set list = grains['selinux'] %}

echo {{ list }}:
  cmd.run

但是当我 运行 状态文件出现错误时。

# salt '*' state.sls list_grains
client1:
    Data failed to compile:
----------
    Rendering SLS 'base:list_grains' failed: mapping values are not allowed in this context
ERROR: Minions returned with non-zero exit code
[root@server ~]# vim /srv/salt/list_grains.sls

访问的grain值如下

# salt '*' grains.item selinux
client1:
    ----------
    selinux:
        ----------
        enabled:
            True
        enforced:
            Permissive

selinux 颗粒是 dictionary/map 像:

selinux:
  enabled: True
  enforced: Permissive

所以在州 ID 中你不能有 dictionary/map。您可以选择所需的字典键,例如 list.enabledlist.enforced.

例如下面的状态ID会输出Permissive:

{% set list = grains['selinux'] %}

echo {{ list.enforced }}:
  cmd.run

如果你想得到完整的字典作为输出,你可以使用像test.echo:

这样的模块
{% set list = grains['selinux'] %}

show-selinux-grains:
  module.run:
    - name: test.echo
    - text: "{{ list }}"