当文件可能不存在时,如何在ansible中使用lookup(' file')?

时间:2015-03-13 18:37:18

标签: ansible ansible-playbook

我想在ansible控制节点上查找文件的内容 -

示例:

- hosts: all
  vars:
    somevar: "{{ lookup('file', playbook_dir + '/some/path' + inventory_hostname) }}"

如果文件不存在,我希望变量未定义或设置为默认值。如果文件不存在,查找模块会抛出错误。处理此错误的正确方法是什么,以便我能够在代码中存在somevar?

2 个答案:

答案 0 :(得分:2)

我最终使用local_action而不是查找...

- name: "Lookup saved ssh hostkey for this host"
  local_action: shell cat {{playbook_dir}}/path/to/{{inventory_hostname}}.pubkey
  ignore_errors: True

答案 1 :(得分:0)

从最初的这篇文章开始到现在,此功能似乎已添加到查找插件中。

对我来说,它有效,我使用的是2.8.5版本:

https://docs.ansible.com/ansible/latest/plugins/lookup.html#using-lookup-plugins 2.6版的新功能。 您现在可以通过将errors设置为ignore,...

来控制所有查找插件中错误的行为。
- hosts: all
  vars:
    somevar: "{{ lookup('file', playbook_dir + '/some/path' + inventory_hostname, errors='ignore') }}"