如何用嵌套列表循环字典?

时间:2018-11-13 22:04:20

标签: ansible yaml ini

Ansible允许深层嵌套的dict,但实际上却不允许您从中获得更多使用!这是我的故事。

我正在尝试使用Ansible配置许多ini文件。为此,我正在使用ini_file模块。此模块至少需要四个信息:

  1. 文件路径
  2. 部分
  3. 选项
  4. 该选项的价值

所以,我定义了一个字典:

  vars:
    conf:
      "/etc/conf1.ini":
        - section: main
          option: foo
          val: bar
        - section: main
          option: baz
          val: qux
      "/etc/otherconf.ini":
        - section: options
          option: flower
          val: bird

以此类推。因此,我可以使用:

  - name: Write ini files
    ini_file:
      path: "{{ item.0.key }}"
      section: "{{ item.1.section }}"
      option: "{{ item.1.option }}"
      value: "{{ item.1.val }}"
    loop: "{{ conf | dict2items | subelements('value') }}"

这...有效。我可以继续使用。 /etc/conf1.ini的示例输出:

[main]
foo = bar
baz = qux

问题:还有更好的方法吗?如何组织数据以更好地使用Ansible循环(新样式)? (with_开头的所有内容)

注意:我也真的不喜欢必须使用完全限定的路径作为dict键;我宁愿以某种方式例如 path: "/etc/conf1.ini"

注2:我不必将所有这些都放在一个变量conf中,但是如果每个ini文件只有一个变量,该如何循环那个? < / p>

0 个答案:

没有答案