我有一个用于创建用户的 yaml。
users:
username:
uid: 12345
gid: 6789
secggroups:
- group1
- group3
gecos: user_for_xyz
home: /home/username
我还有一个只有
usernames
的文件,叫做users_list
。创建用户的剧本如下:
---
\- name: create users
user: name="{{ item }}" uid={{ users[item]['uid'] }} group={{ users[item][gid] }} comment="{{ users[item]['gecos'] }}" home={{ users[item]['home' }} expires=0
with_items:
\- users_list
如何遍历要添加到用户的组?
你的剧本走在正确的轨道上。
为用户变量尝试这个:
users:
- username: someusername
uid: 12345
gid: 6789
groups:
- group1
- group3
gecos: "Some user"
home: /home/someusername
- username: someusername
... etc ...
这是给用户玩的
- name: User creation
user:
name:"{{item.username}}"
groups: "{{item.groups | join(',')}}"
comment: "{{item.name}}"
uid: "{{item.uid}}"
with_items: users
请注意,我修改了您的语法以不使用内联 YAML。
您可能还会发现这个用户角色很有帮助。
你可以使用这样的子元素来解决这个问题:
- name: User creation
user:
name:"{{item.0.username}}"
groups: "{{item.1 }}"
with_subelements:
- "{{ users }}"
- groups
这里是一个调试示例,就像一个目录树:
vars:
test:
- name: Testing subelements loop
dir: dir0
subdir:
- subdir0
- subdir1
- subdir2
tasks:
- name: Subelements loop sample
debug:
msg: "{{ item.0.dir }}/{{ item.1 }}"
with_subelements:
- "{{ test }}"
- subdir
您可以在这里找到更多信息:http://docs.ansible.com/ansible/playbooks_loops.html#standard-loops