使用 Ansible 循环创建多个用户:未定义错误
Using Ansible loop to create multiple users: Undefined error
我正在使用以下 ansible
代码创建多个 unix 用户帐户
---
- hosts: test
become: true
tasks:
- name: more complex items to add several users
user:
name: "{{ item.name }}"
uid: "{{ item.uid }}"
groups: "{{ item.groups }}"
state: present
with_items: "{{ user_details }}"
我正在使用一个单独的变量文件存储用户信息,如下所示
`cat /etc/ansible/vars.yml
---
user_details:
- { name: testuser1, uid: 1002, groups: "admin, logs" }
- { name: testuser2, uid: 1003, groups: logs: }`
为了执行上面的剧本,我尝试了下面的两个命令
sudo ansible-playbook /etc/ansible/userloop.yml -e /etc/ansible/vars.yml
sudo ansible-playbook /etc/ansible/userloop.yml
但两个命令都失败并出现以下错误
fatal: [host-003]: FAILED! => {"msg": "'user_details' is undefined"}
fatal: [host-004]: FAILED! => {"msg": "'user_details' is undefined"}
如何解决这个问题?我想维护一个单独的变量文件来存储用户信息,而不是将它们放在同一个剧本文件中。
变量的类型在模块user的“参数”栏中。试试下面的数据结构
user_details:
- {name: 'testuser1', uid: 1002, groups: ['admin', 'logs']}
- {name: 'testuser2', uid: 1003, groups: ['logs']}
您在通过 vars.yml 时错过了 @。因此,ansible 没有读取文件。试试下面的命令。对我有用。
sudo ansible-playbook /etc/ansible/userloop.yml -e @/etc/ansible/vars.yml
您也可以参考下面剧本中的多个变量文件
- hosts: all
become: true
vars_files:
- /etc/ansible/vars.yml
tasks:
- name: more complex items to add several users
user:
name: "{{ item.name }}"
uid: "{{ item.uid }}"
groups: "{{ item.groups }}"
state: present
with_items: "{{ user_details }}"
我正在使用以下 ansible
代码创建多个 unix 用户帐户
---
- hosts: test
become: true
tasks:
- name: more complex items to add several users
user:
name: "{{ item.name }}"
uid: "{{ item.uid }}"
groups: "{{ item.groups }}"
state: present
with_items: "{{ user_details }}"
我正在使用一个单独的变量文件存储用户信息,如下所示
`cat /etc/ansible/vars.yml
---
user_details:
- { name: testuser1, uid: 1002, groups: "admin, logs" }
- { name: testuser2, uid: 1003, groups: logs: }`
为了执行上面的剧本,我尝试了下面的两个命令
sudo ansible-playbook /etc/ansible/userloop.yml -e /etc/ansible/vars.yml
sudo ansible-playbook /etc/ansible/userloop.yml
但两个命令都失败并出现以下错误
fatal: [host-003]: FAILED! => {"msg": "'user_details' is undefined"}
fatal: [host-004]: FAILED! => {"msg": "'user_details' is undefined"}
如何解决这个问题?我想维护一个单独的变量文件来存储用户信息,而不是将它们放在同一个剧本文件中。
变量的类型在模块user的“参数”栏中。试试下面的数据结构
user_details:
- {name: 'testuser1', uid: 1002, groups: ['admin', 'logs']}
- {name: 'testuser2', uid: 1003, groups: ['logs']}
您在通过 vars.yml 时错过了 @。因此,ansible 没有读取文件。试试下面的命令。对我有用。
sudo ansible-playbook /etc/ansible/userloop.yml -e @/etc/ansible/vars.yml
您也可以参考下面剧本中的多个变量文件
- hosts: all
become: true
vars_files:
- /etc/ansible/vars.yml
tasks:
- name: more complex items to add several users
user:
name: "{{ item.name }}"
uid: "{{ item.uid }}"
groups: "{{ item.groups }}"
state: present
with_items: "{{ user_details }}"