0

我定义了一个字典列表:

members_list:
          any:
             name: any
             username: any
          anyone:
             name: 
             username: anyone

在我的 Ansible 剧本中,我正在运行多个 docker 容器:

docker_container:
     name: "{{ item.key }}"
when: "{{ item.key }} != any"
with_dict: "{{ members_list }}"

但我收到以下错误:

The conditional check '{{ item.key }} != any' failed. The 
error was: error while evaluating conditional ({{ item.key 
}} != any): 'any' is undefined   

当我在没有条件运算符的情况下运行剧本时,它可以正常工作。

提前致谢。

4

1 回答 1

1

您需要引用单词any,否则它会被解释为变量引用。此外,您不需要表达式中的 Jinja 模板标记when(该表达式已被评估为 jinja 表达式):

- docker_container:
       name: "{{ item.key }}"
  when: "item.key != 'any'"
  with_dict: "{{ members_list }}"

我发现像这样的嵌套引号可能会令人困惑,并且经常选择 YAML 的一种替代引用机制,例如:

- docker_container:
       name: "{{ item.key }}"
  when: >-
    item.key != 'any'
  with_dict: "{{ members_list }}"

这与以前的版本相同;我只是觉得它更容易阅读和理解。

于 2018-10-30T21:54:54.540 回答