Ansible:从YAML文件中读取带有键的单个值



我有一个包含类似内容的yaml文件

abc: 123
def: 456
ddd: {{ eee }}
xyz: 789

我尽量避免将整个文件加载到vars空间,但在我的剧本中我需要"def"的值。我想我可以用查找来解决这个问题。但之后

lookup('file', 'path/to/file.yaml')

我不知道如何用Ansible解析文件的内容,以获得带有键的值。我尝试了include_vars,但那一次迫使我将yaml文件值修改为";{{eee}}";,这修改了实际值。有没有一种简单的方法可以读取YAML文件的键值?

使用模板读取文件,例如

- set_fact:
_def: "{{ (lookup('template', 'path/to/file.yaml')|from_yaml).def }}"
vars:
eee: 'default'

给出

_def: '456'

必须定义变量eee。请参见螺纹。


可能,您可能想先设置一个字典,例如

- set_fact:
d1: "{{ lookup('template', 'path/to/file.yaml')|from_yaml }}"
vars:
eee: 'default'
- set_fact:
_def: d1.def

最新更新