gpt4 book ai didi

当变量具有默认值时,Ansible playbook 条件失败

转载 作者:行者123 更新时间:2023-12-01 12:24:55 26 4
gpt4 key购买 nike

鉴于以下剧本( deployment.yml ):

---
- name: Debug
hosts: applicationservers
tasks:
- debug: msg="{{add_host_entries | default('false')}}"
- debug: msg="{{add_host_entries | default('false') == 'true'}}"
- debug: msg="Add host entries = {{add_host_entries | default('false') == 'true'}}"

- include: add_host_entries.yml
when: add_host_entries | default('false') == 'true'

包含条件 add_host_entries.yml总是失败,即使上述所有调试消息都打印出某种 true (我知道在第一条调试消息中它是一个字符串,而其他两个结果是 bool 值)。

当我省略具有默认值的部分时, add_host_entries.yml将被执行:
  when: add_host_entries

不过我需要这个默认值行为,因为它是一个仅在某些阶段设置的可选值。

其他尝试(未成功)

括号
  when: (add_host_entries | default('false')) == 'true'

转换为 bool 值
  when: add_host_entries|default('false')|bool

其他来源和信息

以下是重现问题所需的所有资源。
add_host_entries.yml
---
- name: add_host_entries
hosts: applicationservers
gather_facts: false
tasks:
- debug: msg="Add Host Entries"
inventory
[applicationservers]
127.0.0.1

[all:vars]
add_host_entries=true

称呼
markus@lubuntu:~/foobar$ ansible-playbook deployment.yml -i inventory

版本
markus@lubuntu:~/foobar$ ansible --version
ansible 2.1.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides

markus@lubuntu:~/foobar$ ansible-playbook --version
ansible-playbook 2.1.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides

最佳答案

您尝试有条件地包含 剧本 .看我的 other关于不同包含类型的答案。

问题是,这仅在定义了变量时才有效 之前 Ansible 解析你的剧本。
但是您尝试定义 add_host_entries作为主机级事实(组变量)——这些变量在解析时尚未定义。

如果你用 -e add_host_entries=true 调用你的剧本您的条件将按预期工作,因为在解析期间已知额外变量。

关于当变量具有默认值时,Ansible playbook 条件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40863809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com