使用 ansible 将用户添加到其他组

vdb*_*oor 79 ansible

如何使用 Ansible 将用户添加到其他组?例如,我想在sudo不替换用户现有组的情况下将用户添加到组中。

Ter*_*ior 106

如果{{ user }}系统中已经存在,您应该使用以下命令将其添加到组中:

- name: adding existing user '{{ user }}' to group sudo
  user:
    name: '{{ user }}'
    groups: sudo
    append: yes
Run Code Online (Sandbox Code Playgroud)

要将其添加到一组组中,您可以使用逗号分隔的列表,例如groups: admin,sudo

请注意,如果您省略append: yes,您的用户将从所有其他组中删除,根据usermod 手册页。如果您想使用用户应属于的特定组列表,这将很有用。

  • ...并且注意不要在没有 `s` 的情况下编写 `group:`,因为这会改变主 GID。 (21认同)
  • 请注意:如果您要向现有用户添加辅助组(例如“www-data”),并且其主目录不存在(“/var/www/”),则会创建它!为了避免这种情况,您必须指定“create_home: no”。 (2认同)

小智 56

根据用户模块,您可以使用它:

- name: Adding user {{ user }}  
  user: name={{ user }}
        group={{ user }}
        shell=/bin/bash
        password=${password}
        groups=sudo
        append=yes
Run Code Online (Sandbox Code Playgroud)

您可以在创建它们时添加groups=groupnameappend=yes将它们添加到现有用户

  • 谢谢,`append=yes` 确实是我要找的! (3认同)
  • 我真的有一个问题,这是公认的答案,因为问题没有说明“创建用户并将其添加到特定组”。如果我们因为问题的标题而来自 Google 搜索,我们很可能希望将现有用户添加到组中。 (2认同)

小智 5

请注意,在最近的 Ansible 版本(https://github.com/ansible/ansible/blob/c600ab81ee/lib/ansible/playbook/play_context.py#L46-L55)中{{ user }}已更改为。或者,您也可以使用- 它是相同的。因此,来自 Teresa e Junior 的更新代码如下所示:{{ ansible_user }}ansible_ssh_user

- name: adding existing user "{{ ansible_user }}" to group sudo
   user:
     name: "{{ ansible_user }}"
     groups: sudo
     append: yes
   become: yes
Run Code Online (Sandbox Code Playgroud)

更多修复:

  • 使用双引号使变量扩展
  • 添加,become: yes因为它需要管理权限才能更改组文件