我想将一个巨大的嵌套字典作为extra_vars
传递给 Ansibleplaybook
。我想在我的剧本中使用该字典中的值。
sample_dict = { 'student' : {'name' : 'coder', 'marks' : 100} }
我想将此字典作为extra_var
传递,我想使用它中的值。我无法使用jinja
模板从字典中访问单独的值。
例: 如果我想在ansible-playbook
中使用标记的值,如何访问它?
我正在使用python3.5
ansible 2.8.
我正在使用ansible-runner
模块来运行剧本。
您可以通过两种方式jinja
遍历字典:
- 使用 python 接口。
- 使用
json_query
过滤器
第一个使用括号[]
遍历字典。而且,json_query
会接收一个字符串,其中包含要读取的键的路径。
检查此playbook
示例:
---
- name: Diff test
hosts: local
connection: local
gather_facts: no
vars:
sample_dict:
student:
name: 'coder'
marks: 100
tasks:
- name: Using python dictionary interface
debug:
msg: '{{ sample_dict["student"]["marks"] }}'
- name: Using json_query
debug:
msg: '{{ sample_dict | json_query("student.marks") }}'
每个任务使用不同的方法来访问同一变量。
我希望它有所帮助。