如果在 ansible play 中的 dict 中没有键,如何设置默认值

时间:2021-07-01 05:13:45

标签: ansible ansible-facts

我使用如下所示的主机名将事实设置为字典,

set_fact:
      processed_hosts: "{{ processed_hosts | default([]) + [dict(host_name=item, result=hostvars[item]['_OS_upgraded'])] }}"
    with_items:
      - "{{ groups['reachable_a_hosts'] }}"

当所有主机都有“_OS_upgraded”时它工作良好。

但是当任务在任何主机中失败时,“_OS_upgraded”没有设置,在这种情况下,当我调用这个 hostvars[item]['_OS_upgraded']

所以如果该项目不在主机变量中,则希望默认将其设置为 false,

有人可以告诉我怎么做吗?

1 个答案:

答案 0 :(得分:0)

添加 | 后生效默认(假)

set_fact:
      processed_hosts: "{{ processed_hosts | default([]) + [dict(host_name=item, result=hostvars[item]['_OS_upgraded']|default(False))] }}"
    with_items:
      - "{{ groups['reachable_a_hosts'] }}"
相关问题