我正在尝试使用外部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等,但似乎无法弄清楚。
答案 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