如何从Ansible中的列表做出命令

时间:2019-05-23 14:04:45

标签: ansible yaml jinja2 ansible-inventory

所以我有一个列表,其中包含一些我想格式化/转换为字典的项目。

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

users: 
 - John
 - John_Doe
 - Jane
 - Jane_Doe

预期结果将是这样,

users:
- username: "John"
  fullname:
    - name: John_Doe
- username: Jane
  fullname:
    - name: Jane_Doe

我知道使用Jinja2可以完成类似的事情,但是我似乎无法为我的用例弄清楚。预先感谢。

1 个答案:

答案 0 :(得分:1)

下面的戏

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

这是您要找的吗?