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

问题描述 投票:9回答:2

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

示例:

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

如果文件不存在,我希望变量未定义或设置为默认值。但是,如果文件不存在,则查找模块将引发错误。处理此错误的正确方法是什么,这样我就可以在代码中存在somevar的地方分支?

ansible ansible-playbook
2个回答
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

0
投票

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

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

https://docs.ansible.com/ansible/latest/plugins/lookup.html#using-lookup-plugins2.6版中的新功能。您现在可以通过将errors设置为ignore,...来控制所有查找插件的错误行为,

- hosts: all
  vars:
    somevar: "{{ lookup('file', playbook_dir + '/some/path' + inventory_hostname, errors='ignore') }}"
© www.soinside.com 2019 - 2024. All rights reserved.