Ansible的JSON对象过滤器用于从JSON对象中提取特定数据。以下是一个包含代码示例的解决方法:
example.json
的JSON文件,内容如下:{
"users": [
{
"name": "John",
"age": 25,
"city": "New York"
},
{
"name": "Alice",
"age": 30,
"city": "London"
},
{
"name": "Bob",
"age": 35,
"city": "Paris"
}
]
}
example.yml
的Ansible playbook文件,内容如下:---
- name: Example playbook
hosts: localhost
gather_facts: false
tasks:
- name: Read JSON file
vars:
json_data: "{{ lookup('file', 'example.json') | from_json }}"
debug:
var: json_data
- name: Filter JSON data
vars:
filtered_data: "{{ json_data.users | json_query('[?name==`Alice`]') }}"
debug:
var: filtered_data
在上述playbook中,我们首先使用lookup
模块读取JSON文件并将其转换为Ansible变量json_data
。然后,我们使用json_query
过滤器从json_data
中提取名为"Alice"的用户数据,并将结果保存在filtered_data
变量中。最后,我们使用debug
模块打印过滤后的数据。
ansible-playbook example.yml
运行结果将打印过滤后的数据:
TASK [Filter JSON data] ************************************************************************************************************************************
ok: [localhost] => {
"filtered_data": [
{
"age": 30,
"city": "London",
"name": "Alice"
}
]
}
上述示例演示了如何使用Ansible的JSON对象过滤器从JSON对象中提取特定数据。您可以根据自己的需求修改和扩展这个示例。