Ansible 创建用户和组

Ano*_*uss 4 ansible

我正在尝试使用 Ansible 剧本创建新用户和组。下面是我的文件夹结构。

\n\n
tree\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 create-users.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ubuntu\n
Run Code Online (Sandbox Code Playgroud)\n\n

create-users.yaml剧本包含创建用户和组任务。请注意,我的目标计算机中没有任何组(admin_group)和用户(Rajini、Kamal),而是在运行剧本时创建它们。

\n\n
---\n- name:  Create Users & Groups\n  hosts: target1\n  gather_facts: false\n  tasks:\n    - name: Create Users Task\n      user:\n        name: "{{ item }}"\n        state: present\n        password: "{{ \'default_user_password\' | password_hash(\'sha512\',\'A512\') }}"\n        shell: /bin/bash\n        groups: "{{ admin_group }}"\n      loop:\n        - Rajini\n        - Kamal\n
Run Code Online (Sandbox Code Playgroud)\n\n

我还有另一个文件叫ubuntu选择组名称和密码。运行剧本时,我收到以下错误。

\n\n
ansible-playbook --vault-id @prompt create-users.yaml -K\nBECOME password:\nVault password (default):\n\nPLAY [Create Users & Groups] *****************************************************************************************************************************************************************\n\nTASK [Create Users Task] *********************************************************************************************************************************************************************\nfatal: [target1]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: \'admin_group\' is undefined\\n\\nThe error appears to be in \'/home/osboxes/Ansible_Project/web_deployment/Ansible/groups_vars/create-users.yaml\': line 6, column 7, but may\\nbe elsewhere in the file depending on the exact syntax problem.\\n\\nThe offending line appears to be:\\n\\n  tasks:\\n    - name: Create Users Task\\n      ^ here\\n"}\n\nPLAY RECAP ***********************************************************************************************************************************************************************************\ntarget1                    : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0\n\n
Run Code Online (Sandbox Code Playgroud)\n\n
admin_group: admin\ndefault_user_password: Password1\n
Run Code Online (Sandbox Code Playgroud)\n\n

有人可以帮我解决这个问题吗?

\n\n

在获得用户 Moon 的帮助后更新输出。

\n\n
ansible-playbook --vault-id @prompt create-users.yaml -K\nBECOME password:\nVault password (default):\n\nPLAY [Create Users & Groups] *****************************************************************************************************************************************************************\n\nTASK [Create Users Task] *********************************************************************************************************************************************************************\nchanged: [target1] => (item=Rajini)\nchanged: [target1] => (item=Kamal)\n\nPLAY RECAP ***********************************************************************************************************************************************************************************\ntarget1                    : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\n\n
Run Code Online (Sandbox Code Playgroud)\n\n
ssh Kamal@192.168.0.1\nKamal@192.168.0.1\'s password:\nWelcome to Ubuntu 18.04.3 LTS (GNU/Linux 5.0.0-23-generic x86_64)\nKamal@Ansible_Target1:~$ id\nuid=1005(Kamal) gid=1001(admin) groups=1001(admin)\n
Run Code Online (Sandbox Code Playgroud)\n

Moo*_*oon 5

有几件事:

  • 要使用ubuntu文件中的变量,您需要在 playbook 中指定 vars 文件。
  • 要用作default_user_password变量,请删除引号'
  • 如果您想admin作为用户主要组,请改用group属性。groups另一方面获取列表并将用户添加到列出的组中。

并且,如果目标计算机上尚未创建组,则首先使用group module创建组。

经过上述更改后的 Playbook。

---
- name: Create Users & Groups
  hosts: target1
  gather_facts: false
  vars_files: ubuntu
  tasks:
    - name: Create group
      group:
        name: "{{ admin_group }}"
        state: present

    - name: Create Users Task
      user:
        name: "{{ item }}"
        state: present
        password: "{{ default_user_password | password_hash('sha512','A512') }}"
        shell: /bin/bash
        group: "{{ admin_group }}"
      loop:
        - Rajini
        - Kamal
Run Code Online (Sandbox Code Playgroud)