Как сделать диктовку из списка в Ansible - PullRequest
0 голосов
/ 23 мая 2019

Итак, у меня есть список, содержащий некоторые элементы, которые я хотел бы отформатировать / преобразовать в диктовку.

Текущий список выглядит следующим образом (фиктивное содержимое)

users: 
 - John
 - John_Doe
 - Jane
 - Jane_Doe

Ожидаетсярезультат будет примерно таким:

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

Я знаю, что с помощью Jinja2 вы могли бы достичь чего-то подобного, но я не могу понять это для моего варианта использования.Заранее спасибо.

1 Ответ

1 голос
/ 23 мая 2019

Игра ниже

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

Это то, что вы ищете?

...