【问题标题】:split string in subelements ansible在子元素中拆分字符串 ansible
【发布时间】:2019-07-22 16:56:32
【问题描述】:

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

我尝试了一些方法:

- 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”或“unicode 事物没有属性“AddMembers””的变体

【问题讨论】:

    标签: loops ansible nested-loops


    【解决方案1】:

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

    - 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"
    

    【讨论】:

    • 谢谢!这正是我一直在寻找的! :)
    猜你喜欢
    • 2021-11-24
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    相关资源
    最近更新 更多