在Ansible中将多个变量插入列表的循环 [英] Loop for Insert Multi Variables into List in Ansible
问题描述
我设法通过循环"将用户分为多个组.但是,将用户分配给不确定数量的组时遇到了问题.在下面的ansible-playbook中,我使用了一个循环将用户'Cahbayu'分为3个不同的组,即'DNSAdmins,Backup Operators和Remote Desktop Users',并且可以正常工作:
I managed to get user into multiple groups using ‘loop'. However, I had a problem assigning the user to an uncertain number of groups. In my ansible-playbook below, I used a loop to put the user 'Cahbayu' into 3 different groups namely 'DNSAdmins, Backup Operators, and Remote Desktop Users' and it worked:
---
- 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的组时会遇到一个新问题,该组将显示以下错误结果:
A new problem is encountered when I declare a group with a number less than 3 or more than 3 which will display the following error results:
有人可以解决吗?
推荐答案
我认为不需要为 win_domain_group_membership
任务创建词典列表.仅遍历 group_split
变量就足够了.
I think it is not required to create a list of dictionaries for win_domain_group_membership
task. It might be enough to just loop over the group_split
variable.
- name: split the domain and save as variable
set_fact:
group_split: "{{ group.split(',') }}"
- name: "Add Member to Group"
community.windows.win_domain_group_membership:
name: "{{ item }}"
members: "{{ username }}"
state: present
loop: "{{ group_split }}"
或者由于您是在 vars:
部分中定义组,因此可以将 group
变量定义为列表,并避免使用<
Or since you are defining groups in the vars:
section, you can define the group
variable as a list and avoid set_fact
with split
.
示例:
vars:
username: Cahbayu
group:
- "DNSAdmins"
- "Backup Operators"
- "Remote Desktop Users"
tasks:
- name: "Add Member to Group"
community.windows.win_domain_group_membership:
name: "{{ item }}"
members: "{{ username }}"
state: present
loop: "{{ group }}"
这篇关于在Ansible中将多个变量插入列表的循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!