我开始部署一个ansible服务器,我试图通过一个剧本(add5userslist.yaml)在客户端主机中创建5个用户,循环使用另一个文件(userslist.yaml)的列表中的变量,但不是在职的。
而且...当我尝试将此剧本与该列表一起使用时,这是 ansible 检索到的内容:
似乎问题是实际上使用的列表 ansible 甚至没有将其视为列表,但是我在 ansible 中是新的并且不知道该文件应该包含什么。
剧本代码:
- hosts: GrupoPrincipal
tasks:
- include_vars:
file: /etc/ansible/playbooks/userslist.yaml
name: userslist
- name: Add 5 users from a list
ansible.builtin.user:
name: "{{ item.name }}"
password: "{{'abc123.' | password_hash('sha512')}}"
loop: "{{ userslist }}"
userlist.yaml 代码只是这个,是唯一起作用的东西:
name: 'user1'
name: 'user2'
name: 'user3'
name: 'user4'
name: 'user5'
@Martin 帮助我解决了上述问题,但现在我尝试使用超过 1 种项目类型,但似乎可以正常工作,这就是我获得新代码的方式
- hosts: GrupoPrincipal
tasks:
- include_vars:
file: /etc/ansible/playbooks/userslist.yaml
name: userslist
- name: Add 5 users from a list and put them in groups
ansible.builtin.user:
name: "{{ item.names }}"
groups: "{{ item.groups }}"
password: "{{'abc123.' | password_hash('sha512')}}"
loop:
- { names: '{{ userslist.names }}', groups: '{{ userslist.groups }}' }
和新列表 yaml:
names:
- user1
- user2
- user3
- user4
- user5
groups:
- users
- users
- users
- users
- users
你告诉你的任务循环一个代表你的文件变量的对象,但循环需要一个列表。
你必须定义你的 var_files 像:
然后在您的主要剧本中,删除“item.name”以便仅使用该项目,并在您的 varfile 中精确地使用您使用的变量: