如何从字典的值构建列表?

时间:2021-04-06 13:37:07

标签: arrays ansible ldap

我有一个 AD 用户列表并尝试创建一个专有名称列表

vars:
  admin_users: "user1;user2"
  tasks:
  - set_fact:
    admin: "{{ admin_users.split(';') }}"

  - name: Search account
    community.general.ldap_search:
    <...>
    loop: "{{ admin }}"
    register: ldap_result

  - name: Build DN-array
    set_fact:
      group: "{{ group | default([]) }} +  {{ item.value | json_query(query) }}"
    with_dict: "{{ ldap_result.results }}"
    when: item.key == 'results'
    vars:
      query: "[*].distinguishedName"

  - debug:
    var: "{{ group }}"

然后得到

"<class 'list'>": "VARIABLE IS NOT DEFINED!"

也试过了

group: "{{ group | default([]) }} + [ {{ item.value | json_query(query) }} ]"
group: "{{ group | default([]) }} + {{ [ item.value | json_query(query) ] }}"

收到相同的消息

"<class 'list'>": "VARIABLE IS NOT DEFINED!"

group: "{{ group | default([]) }} + [ '{{ item.value | json_query(query) }}' ]"

然后我得到错误

FAILED! => {"msg": "template error while templating string: expected
token ',', got 'CN'. String: {{[] + [ '['CN=***']' ] + [ '['CN=***']' ]}}"}

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好的,没错,我只需要使用这样的结构

    <...>
    group: "{{ group | default([]) }} + [ {{ item.value | json_query(query) }} ]"
    <...>
    - debug: msg="{{ group }}"

不是这个

- debug:
    var: "{{ group_list_two }}"

正确输出

ok: [localhost] => {
    "msg": [
        [
            "CN=***"
        ],
        [
            "CN=***"
        ]
    ]
}
相关问题