介绍
group模块用于远程主机管理系统用户组(新增/修改/删除组)
作用
管理远程Linux系统/etc/group用户组,对应底层groupadd/groupmod/groupdel命令
提示:只操作系统组
常用参数
| 参数 | 说明 |
|---|---|
name |
【必选】组名称 |
state |
present(默认,创建/更新组);absent(删除组) |
gid |
指定组ID(gid),不填自动分配 |
system |
yes/no 是否为系统组(系统组gid一般 <1000) |
幂等特性
Ad-hoc多次执行相同命令不会重复报错,状态不变时返回changed: false
例子
1. 创建普通用户组
ansible all -m group -a "name=appgroup state=present" -b -i ansible_client.ini
解释:
-b:提权,创建组需要root权限state=present:组不存在则创建;已存在则不改动,可不写
执行结果:
2. 创建组,并指定GID=2001
ansible all -m group -a "name=appgroup gid=2001 state=present" -b -i ansible_client.ini
提示:state=present 可省略
注意:如果主机上已有其他组占用2001,会报错;组已存在但gid不一致,会修改原有组gid
3. 创建系统组 sysgroup
ansible all -m group -a "name=sysgroup system=yes " -b -i ansible_client.ini
4. 删除用户组 appgroup
ansible all -m group -a "name=appgroup state=absent" -b -i ansible_client.ini
注意:如果组内还有用户,默认依然可以删除组(仅删 /etc/group 条目,用户保留)
返回结果字段说明
changed: true # true=发生变更;false=状态已经符合,无操作
gid: 2001
name: appgroup
state: present
system: false
常见坑
- 忘记加
-b提权:创建/删除组必须root,否则权限拒绝报错 - 区分 Ansible inventory 主机组 和 系统group
- inventory
[web]:ansible管理的一批主机 - group模块操作的:远程服务器操作系统里的用户组
- inventory
- gid冲突:指定gid前最好先用Ad-hoc提前检查
# ad-hoc shell模块查看远程gid占用 ansible web -m shell -a "getent group | grep 2001" -b - 不支持组内成员管理:group模块不能添加用户到组,添加用户进组要用
user模块的groups参数
