在子元素中拆分字符串

split string in subelements ansible

我有一个字典列表,我想遍历字典列表,然后有一个内部循环从每个字典中拆分一个字符串并循环遍历该拆分字符串。有没有办法做到这一点?

我尝试了一些方法:

- debug:
     msg: '{{ "Group: " + item.Group + ", AddMembers: " + item.1 }}'
  with_nested:
     - '{{ domainGroups.list | selectattr("AddMembers", "ne", "") | list }}'
     - '{{ AddMembers.split("|") }}'

- debug: 
    msg: '{{ "Group: " + item.Group + ", AddMembers: " + item.1 }}'
  loop: '{{ domainGroups.list | selectattr("AddMembers", "ne", "" ) | list | subelements(AddMembers.split("|")) }}'

字典列表:

        {
            "AddMembers": "",
            "Group": "Group1",
            "Delete": "1",

        },
        {
            "AddMembers": "members1|members2",
            "Group": "Group2",
            "Delete": "",
        },
        {
            "AddMembers": "members1|members2|members3",
            "Group": "Group3",
            "Delete": "",
        },

我希望我尝试过的其中一件事会奏效,但通常我会得到一些 "AddMembers is not defined" 或 "unicode thing has no attribute "AddMembers""

的变体

让我们在第一步中简化字典。下面的任务

- set_fact:
    domainGroups_selected: "{{ domainGroups_selected|default([]) +
                               [ {'Group': item.Group,
                                  'AddMembers': item.AddMembers.split('|')}] }}"
  loop: "{{ domainGroups }}"
  when: item.AddMembers|length > 0
- debug:
    var: item
  loop: "{{ domainGroups_selected }}"

给予

"item": {
    "AddMembers": [
        "members1", 
        "members2"
    ], 
    "Group": "Group2"
}
...
"item": {
    "AddMembers": [
        "members1", 
        "members2", 
        "members3"
    ], 
    "Group": "Group3"
}

然后用子元素循环列表。下面的任务

- debug:
    msg: "Group: {{ item.0.Group }} AddMember: {{ item.1 }}"
  loop: "{{ domainGroups_selected|subelements('AddMembers')|list }}"

给予

"msg": "Group: Group2 AddMember: members1"
"msg": "Group: Group2 AddMember: members2"
"msg": "Group: Group3 AddMember: members1"
"msg": "Group: Group3 AddMember: members2"
"msg": "Group: Group3 AddMember: members3"