词典的访问列表

时间:2018-10-10 11:30:10

标签: list dictionary variables ansible

我正在尝试使用外部var文件为自定义模块创建一堆群组和成员。我需要做的就是访问列表中的词典列表。 我已经尝试了很多事情,但现在可能最接近的是: vars.yml:

groups_and_members:
  FIRST_GROUP:
    "memberx":
      octet: 1
      action: add
    "nostandardy":
      octet: 3
      action: add
    "memberz":
      octet: 5
      action: add
  OTHER_GROUP:
    "member1":
      octet: 7
      action: delete
    "unexpected":
      octet: 1
      action: add

task.yml:

  - name: "add members"
    mymodule:
      cmd: "{{ item.value.action }}"
      parameters:
        name: "{{ item.key }}"
        octet: "{{ item.value.octet }}"
    with_items: "{{ groups_and_members }}"

因此,想法是从列表(groups_and_members).value(第一次迭代中的FIRST_GROUP)中获取。并在cmd中使用其member属性。但是由于我既不知道组的名称也不知道成员的名称,所以我不确定如何访问它们。我不会事先知道这些团体或成员的名称。字典应该在列表中,以免在有新字典的情况下执行新任务。 如何访问组,成员和成员属性? 我已经尝试过with_dict,with_subelements等,但似乎无法弄清楚。

1 个答案:

答案 0 :(得分:1)

我应该以不同的方式格式化字典列表。这是一个重复的问题:在这里回答: Ansible with_subelements

我的var应该看起来像这样:

groups_members:
  - groupname: FIRST_GROUP
    members:
      - name: memberx
        octet: "1"
        action: add
      - name: nostandardy
        octet: "3"
        action: add
      - name: memberz
        octet: "2"
        action: add
      - name: unexpected
        octet: "1"
        action: add
  - groupname: RHOST
    members:
      - member: other1
        octet: "1"
        action: add

然后可以将其作为item.1.action或item.0.value和task进行访问

    with_subelements:
  - "{{ groups_members }}"
  - members
相关问题