如果找不到文件,则Ansible include_vars继续

时间:2015-06-05 20:08:27

标签: 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/apt.conf.d/01_proxy owner=root group=root mode=644
  sudo: true
  when: aptcacher_host is defined

Ansible版本:1.9.1

2 个答案:

答案 0 :(得分:4)

ignore_errors任务只需include_vars

- 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]

           

收集事实   ************************************************** ************* ok:[localhost]

     

任务:[include_vars nonexistent_file]   *****************************************失败:[localhost] => {"失败":是的,"文件":   " / home / ilya / spielwiese / ansible / nonexistent_file"} msg:源文件没有   找到。 ...忽略

     

任务:[debug msg ="节目继续"]   ******************************************确定:[localhost] => {       " msg":"节目继续" }

答案 1 :(得分:1)

您可以使用with_first_found对此进行归档。

- 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