如果找不到文件,Ansible include_vars将继续
如果我有这样的东西:如果找不到文件,Ansible include_vars将继续,ansible,ansible-playbook,Ansible,Ansible Playbook,如果我有这样的东西: - include_vars: this_file_doesnt_exist.yml ansible将抛出错误“在…处找不到输入文件”,并停止设置过程 我想知道如果找不到文件,是否可以允许设置过程继续进行 我的用例如下所示: 尝试加载变量文件 如果存在这些变量,则执行任务 例如: - include_vars: aptcacher.yml - name: use apt-cache template: src=01_proxy.j2 dest=/etc/apt/
- include_vars: this_file_doesnt_exist.yml
ansible将抛出错误“在…处找不到输入文件”,并停止设置过程
我想知道如果找不到文件,是否可以允许设置过程继续进行
我的用例如下所示:
- 尝试加载变量文件
- 如果存在这些变量,则执行任务
- include_vars: aptcacher.yml
- name: use apt-cache
template: src=01_proxy.j2 dest=/etc/apt/apt.conf.d/01_proxy owner=root group=root mode=644
sudo: true
when: aptcacher_host is defined
Ansible版本:1.9.1您可以使用它来存档
- include_vars: "{{ item }}"
with_first_found:
- this_file_doesnt_exist.yml
如果没有至少一个匹配的文件,我不能100%肯定它会毫无怨言地工作。如果它不起作用,您需要添加一个空的回退文件:
- include_vars: "{{ item }}"
with_first_found:
- this_file_doesnt_exist.yml
- empty_falback.yml
您可以在“包含变量”任务中忽略错误:
- include_vars: nonexistant_file
ignore_errors: yes
编辑
当ansible>1.6.5时,我得到
test.yml
---
- hosts: localhost
tasks:
- include_vars: nonexistent_file
ignore_errors: yes
- debug:
msg="The show goes on"
播放[本地主机]
收集事实 ***************************************************************确定:[本地主机] 任务:[包含变量不存在的文件] *****************************************失败:[localhost]=>{“失败”:true,“文件”: “/home/ilya/spielwiese/ansible/nonexistent_file”}msg:源文件不存在 建立忽视 任务:[调试消息=“节目继续”] ******************************************确定:[本地主机]=>{ “msg”:“节目继续”}
第一种情况不起作用,它至少需要一个匹配的文件(输出“未提供源文件”)。第二种情况确实有效,但它听起来更像是一种解决办法,而不是一种适当/干净的解决方案。谢谢我尝试过“忽略错误”,但似乎不起作用。Ansible将抛出相同的错误“在…处找不到输入文件”。谢谢您正在使用
包含变量作为任务?你试过我上面发布的剧本吗?只试过你的剧本(ansible playbook-i localhost,test.yml
),得到了相同的错误“输入文件未在…找到”。您是否使用不同的命令来运行playbook?我使用的是ansible 1.9.1。哦,这完全不是ansible的命名方式(只是想知道其他任何东西是否适合您)。您需要使用-i指定一个清单文件(并且不应该有逗号。因此调用类似于ansible playbook test.yml
或ansible playbook-i/path/to/inventory test.yml),并且清单文件应该包含类似于localhost ansible\u connection=local
(请参阅文档)