【问题标题】:Gather dict from another dict in Ansible从 Ansible 中的另一个 dict 收集 dict
【发布时间】:2016-11-10 09:35:43
【问题描述】:

我有一些字典:

users_to_add:
    - username: Harley Quinn
      login: 90987264
      group: mininform
      group_desc: "Some random data for description"
      personal_data:
        - first_name: Harley
          last_name: Quinn
          mail: harley@gmail.com
          telnum: +7777777777
          jobtitle: minister
    - username: Vasya Pupkin
      login: 77777777
      group: mininform
      group_desc: "Some random data for description"
      personal_data:
        - first_name: Vasya
          last_name: Pupkin
          mail: vasya@gmail.com
          telnum: +7970000000
          jobtitle: minister

我有一个只适用于列表的 ansible 模块:

- name: Create needed groups
    ipa_group:
      state: present
      name: "{{ item.group }}"
      description: "{{ item.group_desc }}"
      ipa_host: "{{ global_host }}"
      ipa_user: "{{ global_user }}"
      ipa_pass: "{{ global_pass }}"
      validate_certs: no
      user: []
    with_items:
      - "{{ users_to_add }}"

此模块需要“用户”参数下的用户列表,创建一个组并将用户添加到其中。我想像这样映射字典“users_to_add”: (使用 users_to_add 字典) {group_name: ["user1", "user2"...]} 并将这个新字典提供给模块。 我如何使用ansible 完成此操作? 我知道首先我应该使用

set_fact:
    new_dict: 
with_items: {{ users_to_add }}

...

然后将这个新字典提供给模块,其中键是要创建的组名和值 - 要添加到组的用户列表,但我不明白如何使用 ansible 完成此操作...

【问题讨论】:

  • 很难理解你想在这里实现什么...ipa_group 模块创建组并将用户分配给他们。但是您迭代 users_to_add 而不是组。请使用您希望创建的包含哪些用户名的确切组名来编辑您的问题。
  • 我想迭代 users_to_add 字典并在新字典中收集所有组名和用户登录信息,其中:{group: [所有拥有该组的用户], group: ...}

标签: python dictionary ansible


【解决方案1】:

试试这个:

  - name: Create needed groups
    ipa_group:
      state: present
      name: "{{ item }}"
      description: "{{ users_to_add | selectattr('group','equalto',item) | map(attribute='group_desc') | list | first }}"
      ipa_host: "{{ global_host }}"
      ipa_user: "{{ global_user }}"
      ipa_pass: "{{ global_pass }}"
      validate_certs: no
      user: "{{ users_to_add | selectattr('group','equalto',item) | map(attribute='username') | list }}"
    with_items: "{{ users_to_add | map(attribute='group') | list | unique }}"

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多