Ansible 强制预先创建文件可解析条件包含
我认为,只要将一个变量设置为Ansible 强制预先创建文件可解析条件包含,ansible,ansible-playbook,Ansible,Ansible Playbook,我认为,只要将一个变量设置为true/false值,我就可以有条件地包括特定于应用程序的剧本,如下所示: # "Run application specific configuration scripts" - include: "app_cfg/{{ app_name }}.yml" when: "{{ app_conf[app_name].app_cfg }}" ignore_errors: no tags: - conf 不幸的是,Ansible迫使我提前创建文件:
true/false
值,我就可以有条件地包括特定于应用程序的剧本,如下所示:
# "Run application specific configuration scripts"
- include: "app_cfg/{{ app_name }}.yml"
when: "{{ app_conf[app_name].app_cfg }}"
ignore_errors: no
tags:
- conf
不幸的是,Ansible
迫使我提前创建文件:
app_conf:
my_app_1:
app_cfg: no
my_app_2:
app_cfg: yes
包括和,当在常识中不是有条件的。
它实际上包括include文件中的每个任务,并将给定的语句附加到包含的每个任务中。
所以它希望包含文件存在
您可以尝试使用和跳过:true
大概是这样的:
# ansible --version
ansible 1.9.2
如果app\u cfg
为true,并且不存在.file
(将被跳过),则应该提供有效的配置名称
请参阅关于跳过选项的答案。当
在常识中不是有条件时,将
包括在中。
它实际上包括include文件中的每个任务,并将给定的语句附加到包含的每个任务中。
所以它希望包含文件存在
您可以尝试使用和跳过:true
大概是这样的:
# ansible --version
ansible 1.9.2
如果app\u cfg
为true,并且不存在.file
(将被跳过),则应该提供有效的配置名称
请参阅关于跳过选项的答案。虽然有点难看,但仍然是一个很棒的功能,我在ansible docs丛林中完全错过了这一功能。谢谢我不得不接受你的答案,因为它确实会产生错误:<代码>错误:[Debug + +WITH项目]是一个已删除的未被删除的特性< /Calp> @ Nar·NASK,考虑升级到AnEffice 2。x:在2中,您还可以使用循环和任务IsSee。我知道我应该(最终我会),不幸的是,我目前没有这个选项,因为我必须解决大量生产剧本中ansible版本之间的(潜在)不匹配。。。谢谢你的见解。虽然有点难看,但仍然是一个伟大的功能,这是我在ansible docs丛林中完全错过的。谢谢我不得不接受你的答案,因为它确实会产生错误:<代码>错误:[Debug + +WITH项目]是一个已删除的未被删除的特性< /Calp> @ Nar·NASK,考虑升级到AnEffice 2。x:在2中,您还可以使用循环和任务IsSee。我知道我应该(最终我会),不幸的是,我目前没有这个选项,因为我必须解决大量生产剧本中ansible版本之间的(潜在)不匹配。。。不管怎样,谢谢你的见解。
# warning, code not tested
- include: "app_cfg/{{ app_name }}.yml"
with_first_found:
- files:
- "{{ app_conf[app_name].app_cfg | ternary('app_cfg/'+app_name+'.yml', 'unexisting.file') }}"
skip: true
tags: conf