将嵌套字典作为extra_vars传递给ansible-playbooks

时间:2019-08-08 09:09:00

标签: ansible python-3.5 ansible-2.x ansible-runner

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以通过两种方式在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") }}'

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

希望对您有帮助。

相关问题