有没有办法使用ansible将活动目录中的用户分配给多个组?

Posted

技术标签:

【中文标题】有没有办法使用ansible将活动目录中的用户分配给多个组?【英文标题】:Is there a way to assign a user in the active directory to multiple groups with ansible? 【发布时间】:2021-05-09 13:25:56 【问题描述】:

我创建了一个 ansible-playbook,旨在通过 Ansible 将用户添加到 Active Directory 中的组,代码如下所示:

# addmembertogroup.yaml
# Skip task when 'group' or 'username' is undefined
# Show message when 'group' or 'username' doesn't exist
---
- hosts: brc.testlab.com
  gather_facts: no
  tasks:
    - name: "Add Member to Group"
      block:
        - name: "Add Member to Group"
          community.windows.win_domain_group_membership:
            name: "group"
            members: "username"
            state: present
          when: (group is defined) and (username is defined)
  
      rescue:
        - name: Print when error
          debug:
            msg: Username / Group not exist 

使用以下命令运行 playbook:

Ansible-playbook –i hosts addmembertogroup.yaml –e group=DNSAdmins –e username=Cahbayu

基于现有的 ansible playbook 和命令,我设法将名为 Cahbayu 的用户添加到 DNSAdmins 组中。但是,我希望用户在一个命令中位于多个组中。例如,我想将用户 Cahbayu 添加到组 DNSAdmins, Backup Operators, Remote Desktop Users。我已将组参数设置为如下列表,但结果仍然失败:

---
- hosts: brc.testlab.com
  gather_facts: no
  tasks:
    - name: "Add Member to Group"
      block:
        - name: "Add Member to Group"
          community.windows.win_domain_group_membership:
            name: 
              -  "group"
            members: "username"
            state: present
              when: (group is defined) and (username is defined)
  
          rescue:
            - name: Print when error
              debug:
                msg: Username / Group not exist 

结果如下: [将用户添加到多个组失败][1]

因此,我的问题是,有没有办法使用 Ansible 将用户输入到 Active Directory 中的多个组中?谢谢。


(已编辑)

根据提供的答案,我设法使用“循环”将用户分成多个组。

【问题讨论】:

【参考方案1】:

我认为如果您在变量或列表中定义组并遍历您希望添加用户的列表,我认为您可以做到这一点,请检查此链接它可以帮助您管理这样做,因为您的剧本正在工作,只需要一个定义明确的循环

https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html[loops 在 ansible]1

【讨论】:

以上是关于有没有办法使用ansible将活动目录中的用户分配给多个组?的主要内容,如果未能解决你的问题,请参考以下文章

如何以正确的方式将变量分配给 Ansible 中的另一个变量?

如何将本地角色与从ansible-galaxy加载的角色分开?

如何将所有 memberOf 属性分配给 LDAP 中的特定用户

将项目分配给ansible中的var with_items

如何从活动目录中获取用户列表?

ansible学习