如何从Ansible中的列表中制作口述

如何从Ansible中的列表中制作口述,ansible,yaml,jinja2,ansible-inventory,Ansible,Yaml,Jinja2,Ansible Inventory,因此,我有一个列表,其中包含一些我想格式化/转换为dict的项目 当前列表如下所示(虚拟内容) 预期结果是这样的, users: - username: "John" fullname: - name: John_Doe - username: Jane fullname: - name: Jane_Doe 我知道使用Jinja2可以完成类似的事情,但我似乎无法在我的用例中找到它。提前谢谢。下面的剧本 vars: users: - John - J

因此,我有一个列表,其中包含一些我想格式化/转换为dict的项目

当前列表如下所示(虚拟内容)

预期结果是这样的,

users:
- username: "John"
  fullname:
    - name: John_Doe
- username: Jane
  fullname:
    - name: Jane_Doe
我知道使用Jinja2可以完成类似的事情,但我似乎无法在我的用例中找到它。提前谢谢。

下面的剧本

vars:
  users: 
    - John
    - John_Doe
    - Jane
    - Jane_Doe
  users_dir: []
tasks:
  - set_fact:
      users_dir: "{{ users_dir + [{'username': users[item],
                                   'fullname': [{'name': users[item+1]}]
                                   }] }}"
    loop: "{{ range(0, users|length, 2)|list }}"
  - debug:
      var: users_dir
给出(节略):


这就是你要找的吗?

你尝试了什么,结果如何,哪里遇到了问题?
vars:
  users: 
    - John
    - John_Doe
    - Jane
    - Jane_Doe
  users_dir: []
tasks:
  - set_fact:
      users_dir: "{{ users_dir + [{'username': users[item],
                                   'fullname': [{'name': users[item+1]}]
                                   }] }}"
    loop: "{{ range(0, users|length, 2)|list }}"
  - debug:
      var: users_dir
"users_dir": [
    {
        "fullname": [
            {
                "name": "John_Doe"
            }
        ], 
        "username": "John"
    }, 
    {
        "fullname": [
            {
                "name": "Jane_Doe"
            }
        ], 
        "username": "Jane"
    }
]