ansible - 使用 Ansible 循环创建多个用户:未定义的错误
问题描述
我正在使用以下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"}
如何解决问题?我想维护一个单独的变量文件来存储用户信息,而不是将它们放在同一个剧本文件中。
解决方案
您还可以参考以下剧本中的多个变量文件
- 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 }}"
推荐阅读
- c# - Windows 混合现实 - AttachToController
- javascript - 如果未进行选择,则 JQuery 或 JavaScript 在按钮单击时发出警报
- javascript - NestJS Nest 无法解析 RolesService 的依赖项(+、+、?)
- caching - 我们可以使用注释或 Java 反射在 GemFire PdxSerializer 之间转换字段吗?
- r - 在r中以不同方式替换字符串中的多个符号
- python - 如何通过函数传递数据帧并返回另一个数据帧?
- jquery - 在某些条件下禁用弹出窗口制作工具
- barcode-scanner - 霍尼韦尔 PyUSB 无按钮条码扫描器
- blueprism - 突出显示菜单项后,无法在 Web 应用程序的 Application Moduler 中监视菜单项
- python - Scrapy 返回垃圾数据,例如空格和换行符。我该如何过滤这些?