Ansible `user` 模块

Ansible user 模块

一、简介

  • 功能user 模块用于管理远程主机上的用户账户。它可以创建、修改或删除用户,以及设置用户的密码、权限、用户组等属性。
  • 使用场景:常用于自动化管理用户账户,如在多个服务器上批量创建新用户、修改用户密码或删除不需要的用户账户。

二、基本用法

2.1 语法

ansible <pattern> -m user -a "name=<username> state=<state> [other options]"
  • <pattern>:指定要操作的主机或主机组,例如 allwebservers
  • -m user:指定使用 user 模块。
  • name=<username>:指定要管理的用户账户名称。
  • state=<state>:指定用户账户的目标状态,如 presentabsent

2.2 常见 state 参数

  • present:确保用户账户存在。如果不存在,则创建它。
  • absent:确保用户账户不存在。如果存在,则删除它。

三、使用示例

3.1 创建用户账户

ansible all -m user -a "name=johndoe state=present"
  • 解释:在所有主机上创建名为 johndoe 的用户。如果用户已经存在,不做任何更改。

3.2 删除用户账户

ansible all -m user -a "name=johndoe state=absent"
  • 解释:在所有主机上删除名为 johndoe 的用户账户。如果用户不存在,不做任何操作。

3.3 创建用户并设置密码

ansible all -m user -a "name=johndoe password='<hashed_password>'"
  • 解释:在所有主机上创建名为 johndoe 的用户,并设置密码。注意,密码必须是经过加密处理的哈希值(通常通过 openssl passwd 生成)。

3.4 创建用户并将其添加到组

ansible all -m user -a "name=johndoe groups=developers"
  • 解释:在所有主机上创建名为 johndoe 的用户,并将其添加到 developers 组。如果组不存在,可能会导致错误,建议确保组存在或使用 group 模块先创建组。

3.5 添加用户到多个组并设置为附加组

ansible all -m user -a "name=johndoe groups=developers,admins append=yes"
  • 解释:在所有主机上将 johndoe 用户添加到 developersadmins 组,同时保留用户现有的组成员身份。

3.6 创建用户并设置其家目录

ansible all -m user -a "name=johndoe home=/home/johndoe createhome=yes"
  • 解释:在所有主机上创建名为 johndoe 的用户,并设置其家目录为 /home/johndoe。如果 createhome=yes,则会自动创建家目录。

四、其他常用选项

4.1 password

  • 功能:设置用户的密码。密码必须是加密后的哈希值,可以使用 openssl passwd 生成。

  • 用法

    ansible all -m user -a "name=johndoe password='<hashed_password>'"
    
    • 解释:为 johndoe 用户设置指定的加密密码。

4.2 groups

  • 功能:指定用户所属的组,可以是单个组或逗号分隔的多个组。

  • 用法

    ansible all -m user -a "name=johndoe groups=wheel,developers"
    
    • 解释:将 johndoe 用户添加到 wheeldevelopers 组。

4.3 append

  • 功能:控制是否将用户添加到新组时保留其现有的组成员身份。默认情况下,用户会被移除出所有未列出的组。

  • 用法

    ansible all -m user -a "name=johndoe groups=admins append=yes"
    
    • 解释:将 johndoe 用户添加到 admins 组,并保留其现有的组成员身份。

4.4 home

  • 功能:设置用户的家目录路径。

  • 用法

    ansible all -m user -a "name=johndoe home=/custom/home/johndoe createhome=yes"
    
    • 解释:设置 johndoe 用户的家目录为 /custom/home/johndoe,并创建该目录。

4.5 shell

  • 功能:设置用户的默认登录 shell。

  • 用法

    ansible all -m user -a "name=johndoe shell=/bin/bash"
    
    • 解释:设置 johndoe 用户的默认 shell 为 /bin/bash

4.6 remove

  • 功能:在删除用户时,是否同时删除用户的家目录和邮件文件。默认情况下,删除用户不会删除这些文件。

  • 用法

    ansible all -m user -a "name=johndoe state=absent remove=yes"
    
    • 解释:删除 johndoe 用户,并同时删除其家目录和邮件文件。

五、注意事项

  • 密码管理:设置用户密码时,确保使用加密的哈希值,而不是明文密码。可以使用 openssl passwd 工具生成加密后的密码。
  • 组管理:使用 groups 选项时,注意现有的组成员身份是否需要保留。如果需要保留,请使用 append=yes 选项。
  • 用户安全:在自动化管理用户账户时,确保用户的权限设置符合组织的安全策略,特别是在生产环境中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟生啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值