首页 > 解决方案 > 使用 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"}

如何解决问题?我想维护一个单独的变量文件来存储用户信息,而不是将它们放在同一个剧本文件中。

标签: ansiblerheluser-accounts

解决方案


您还可以参考以下剧本中的多个变量文件

- 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 }}"

推荐阅读