我想在ansible控制节点上查找文件的内容 -
示例:
- hosts: all
vars:
somevar: "{{ lookup('file', playbook_dir + '/some/path' + inventory_hostname) }}"
如果文件不存在,我希望变量未定义或设置为默认值。如果文件不存在,查找模块会抛出错误。处理此错误的正确方法是什么,以便我能够在代码中存在somevar?
答案 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') }}"