2

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

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

我想传递这个字典,因为extra_var我想使用它的值。我无法使用jinja模板访问字典中的单独值。

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

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

4

1 回答 1

1

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") }}'

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

我希望它有所帮助。

于 2019-08-08T11:45:19.803 回答