如何使用Ansible将用户添加到其他组?例如,我想将一个用户添加到sudo组中而不替换该用户现有的组。

#1 楼

根据用户模块,您可以使用以下命令:

- name: Adding user {{ user }}  
  user: name={{ user }}
        group={{ user }}
        shell=/bin/bash
        password=${password}
        groups=sudo
        append=yes


创建时,您只需添加groups=groupnameappend=yes即可将它们添加到现有用户中

评论


谢谢,append = yes确实是我想要的!

–vdboor
13-10-26在9:21



似乎存在一个问题:如果用户已经存在,而我只想将其添加到组或从组中删除该怎么办?我不确定100%,但是我认为只有在创建用户时才考虑“ group”属性。

– jlecour
16年7月19日在15:41

我确实有一个问题,那就是被接受的答案,因为该问题并未指出“创建用户并将其添加到特定组”。如果由于问题的标题来自Google搜索,我们很可能希望将现有用户添加到组中。

–丹尼尔F
18年8月27日在11:06



使用“ local = yes”时该怎么做?

– KumZ
20-04-28在13:53

#2 楼

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

- name: adding existing user '{{ user }}' to group sudo
  user:
    name: '{{ user }}'
    groups: sudo
    append: yes


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

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

评论


…并当心不要写组:不带s,因为这会改变主GID。

– Serge Stroobandt
17年6月15日在20:01

...,请注意,如果用户不存在,它将被创建!

–EM0
19年1月24日在14:03

@ EM0是的,应该在用户模块不存在的情况下创建用户,但是,如果用户试图修改甚至不应该存在的用户,则用户应查看其代码。

– Teresa e Junior
19年1月24日在16:48



#3 楼

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

- name: adding existing user "{{ ansible_user }}" to group sudo user: name: "{{ ansible_user }}" groups: sudo append: yes become: yes

更多修复:


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