用于将多个变量插入Ansible中的列表的循环

用于将多个变量插入Ansible中的列表的循环,ansible,active-directory,Ansible,Active Directory,我使用“循环”将用户分为多个组。但是,我在将用户分配到数量不确定的组时遇到了一个问题。在我下面的ansible playbook中,我使用循环将用户“Cahbayu”分为3个不同的组,即“DNSAdmins、备份操作员和远程桌面用户”,它起到了作用: --- - hosts: brc.testlab.com gather_facts: no vars: group: DNSAdmins, Backup Operators, Remote Desktop Users use

我使用“循环”将用户分为多个组。但是,我在将用户分配到数量不确定的组时遇到了一个问题。在我下面的ansible playbook中,我使用循环将用户“Cahbayu”分为3个不同的组,即“DNSAdmins、备份操作员和远程桌面用户”,它起到了作用:

---
- hosts: brc.testlab.com
  gather_facts: no
  vars:
    group: DNSAdmins, Backup Operators, Remote Desktop Users
    username: Cahbayu
    
  tasks:
  - name: split the domain and save as variable
    set_fact:
      group_split: "{{ group.split(',') }}"
      
  - name: show group in domain
    debug:
      msg: "{{ group_split }}"
      
  - name: "Add Member to Group"
    community.windows.win_domain_group_membership:
      name: "{{item.group}}"
      members: "{{item.username}}"
      state: present
    loop: 
      - { group: "{{(group_split)[0]}}", username: "{{username}}" }
      - { group: "{{(group_split)[1]}}", username: "{{username}}" }
      - { group: "{{(group_split)[2]}}", username: "{{username}}" }
当我声明一个数字小于3或大于3的组时遇到一个新问题,该组将显示以下错误结果:


有人有解决方案吗?

我认为不需要为
win\u domain\u group\u membership
任务创建字典列表。只要在
group\u split
变量上循环就足够了

-name:拆分域并另存为变量
设定事实:
group_split:“{{group.split(',')}”
-名称:“将成员添加到组”
community.windows.win\u域\u组\u成员资格:
名称:“{{item}}”
成员:“{{username}}”
国家:现在
循环:“{group_split}}”
或者,由于您是在
vars:
部分定义组,因此可以将
group
变量定义为列表,并避免使用
split
设置事实

例如:

vars:
用户名:Cahbayu
组:
-“DNSAdmins”
-“备份操作员”
-“远程桌面用户”
任务:
-名称:“将成员添加到组”
community.windows.win\u域\u组\u成员资格:
名称:“{{item}}”
成员:“{{username}}”
国家:现在
循环:“{group}}”

我认为不需要为
win\u domain\u group\u成员身份任务创建词典列表。只要在
group\u split
变量上循环就足够了

-name:拆分域并另存为变量
设定事实:
group_split:“{{group.split(',')}”
-名称:“将成员添加到组”
community.windows.win\u域\u组\u成员资格:
名称:“{{item}}”
成员:“{{username}}”
国家:现在
循环:“{group_split}}”
或者,由于您是在
vars:
部分定义组,因此可以将
group
变量定义为列表,并避免使用
split
设置事实

例如:

vars:
用户名:Cahbayu
组:
-“DNSAdmins”
-“备份操作员”
-“远程桌面用户”
任务:
-名称:“将成员添加到组”
community.windows.win\u域\u组\u成员资格:
名称:“{{item}}”
成员:“{{username}}”
国家:现在
循环:“{group}}”

这真的帮了我很大的忙,谢谢你这么详细的回答!不客气,很高兴它对我有帮助。它真的帮助了我,谢谢你这么详细的回答!不客气,很高兴这对你有帮助。