我想在ansible控制节点上查找文件的内容-
示例:
- hosts: all
vars:
somevar: "{{ lookup('file', playbook_dir + '/some/path' + inventory_hostname) }}"
如果文件不存在,我希望变量未定义或设置为默认值。但是,如果文件不存在,则查找模块将引发错误。处理此错误的正确方法是什么,这样我就可以在代码中存在somevar的地方分支?
我最终使用local_action而不是查找...
- name: "Lookup saved ssh hostkey for this host"
local_action: shell cat {{playbook_dir}}/path/to/{{inventory_hostname}}.pubkey
ignore_errors: True
似乎从最初的这篇文章到现在,此功能已添加到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') }}"