Ansible在json文件中查找单行

ali*_*der 4 json ansible ansible-playbook

我需要从动态生成的json文件中读取ip行,并将其添加到服务器上的配置文件中.

在Ansible主页上,我找到了两个 有用的模块:
- 查找模块
- fileinline模块

然而,查找示例显示使用此短语查找文件的整个内容"{{ lookup('file', '/etc/foo.txt') }}"
如何将结果过滤为读取单行?

有人知道实现这个目标的好方法吗?

udo*_*dan 8

您可能确实需要JSON dict中的特殊键我猜?如果它只是一个无法在JSON结构中访问的随机行,那将很难.您需要在单独的任务中grep out the line.

但是我们假设您想要一个特殊的dict值,然后您可以使用from_json过滤器将JSON转换为一个对象:

{{ lookup('file', '/etc/foo.txt') | from_json }}
Run Code Online (Sandbox Code Playgroud)

现在,如果你想要bar包含数据结构的值,这样的东西应该工作:

{{ (lookup('file', '/etc/foo.txt') | from_json).get('bar') }}
Run Code Online (Sandbox Code Playgroud)