【问题标题】:How to make a dict from a list in Ansible如何从 Ansible 中的列表中制作字典
【发布时间】:2019-05-23 14:04:44
【问题描述】:

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

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

users: 
 - John
 - John_Doe
 - Jane
 - Jane_Doe

预期的结果会是这样的,

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

我知道使用 Jinja2 可以完成这样的事情,但我似乎无法为我的用例弄清楚。提前致谢。

【问题讨论】:

  • 你尝试了什么,结果如何,卡在哪里?

标签: ansible yaml jinja2 ansible-inventory


【解决方案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"
    }
]

这就是你要找的吗?

【讨论】:

    猜你喜欢
    • 2021-07-20
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多