将嵌套词典作为extra_vars传递给 ansible-playbook



我想将一个巨大的嵌套字典作为extra_vars传递给 Ansibleplaybook。我想在我的剧本中使用该字典中的值。

sample_dict = { 'student' : {'name' : 'coder', 'marks' : 100} }

我想将此字典作为extra_var传递,我想使用它中的值。我无法使用jinja模板从字典中访问单独的值。

例: 如果我想在ansible-playbook中使用标记的值,如何访问它?

我正在使用python3.5ansible 2.8.我正在使用ansible-runner模块来运行剧本。

您可以通过两种方式jinja遍历字典:

  1. 使用 python 接口。
  2. 使用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") }}'

每个任务使用不同的方法来访问同一变量。

我希望它有所帮助。

最新更新