ansible 空字典条件

ansible 空字典条件

我运行此代码时出现错误:

- set_fact:
    my_var: "{{ my_var|default({}) | combine( {item.key: item.value} ) | default({}) }}"
    with_dict: "{{ my_dict }}"
    when: my_id in authorised[item.key]

失败!=> {"失败":true,"msg":"条件检查'my_id in authorises[item.key]'失败。错误为:评估条件(my_id in authorised[item.key])时出错:无法查找名称或访问模板字符串中的属性({% if my_id in authorised[item.key] %} True {% else %} False {% endif %})。\n请确保您的变量名称不包含无效字符(如'-'):类型为'StrictUndefined'的参数不可迭代\n\n错误似乎出现在''中:但可能\n在文件的其他地方,具体取决于确切的语法问题。\n\n有问题的行似乎是:...

my_id 是一个全局变量,authorised 是一个空字典(authorised: {} )

有没有办法添加条件,当授权为空字典时跳过任务。我刚刚尝试过

when: authorised is defined
when: authorised

但它不起作用。有什么建议吗?

答案1

我希望您自己能解决这个问题,但问题是withandwhen子句的缩进不正确。正如所写,它们是模块的属性,而不是任务的循环和条件。

更正:

- set_fact:
    my_var: "{{ my_var|default({}) | combine( {item.key: item.value} ) | default({}) }}"
  with_dict: "{{ my_dict }}"
  when: my_id in authorised[item.key]

相关内容