ansible常用模块之 -- user模块 -- 管理用户账户
user模块 – 管理用户账户
一、摘要
- 管理用户帐号和用户属性。
- 对于Windows目标,使用win_user模块代替。
二、参数
参数 | 选项/默认值 | 描述 |
---|---|---|
append boolean | · no ← · yes | 如果为 yes,将用户添加到 groups 选项指定的组中。 如果为 no,则只将用户添加到 groups 选项中指定的组中,并将其从所有其他组中删除。 与 local 选项相互排斥。 |
authorization string | 设置用户的授权。 与其他平台一起使用时不执行任何操作。 可以使用逗号分隔设置多个授权。 要删除所有授权,请使用authorization=‘’。 目前仅在Illumos/Solaris上支持。 | |
comment string | 可选设置用户帐户的描述(又名GECOS)。 | |
create_home boolean | · yes ← · no | 除非设置为no,否则将在创建帐户时或者该账户主目录不存在时,为用户创建一个主目录。 |
expires boolean | 用户在epoch中的过期时间,在不支持该功能的平台上被忽略。 目前支持GNU/Linux、FreeBSD和DragonFlyBSD。 从Ansible 2.6开始,可以通过指定负值来删除过期时间。目前在GNU/Linux和FreeBSD上支持。 | |
force boolean | · no ← · yes | 该参数只影响state=absent,它强制删除受支持平台上的用户和相关目录。 其行为与 userdel --force 相同。 当与 generate_ssh_key=yes 一起使用时,这将强制覆盖现有的密钥。 |
generate_ssh_key boolean | · no ← · yes | 是否为该用户生成SSH密钥。 不会覆盖现有的SSH密钥,除非使用 force=yes。 |
group string | 可选地设置用户的主组(接受组名)。 | |
groups list | 用户将被添加到的组列表。当设置为空字符串"时,用户将从除主组外的所有组中删除。 与 local 选项相互排斥 | |
hidden boolean | · no · yes | 仅适用于macOS,可选地从登录窗口和系统首选项隐藏用户。 如果使用 system 选项,则默认为 yes。 |
home path | 可选地设置用户的主目录。 | |
local boolean | · no ← · yes | 强制在实现它的平台上使用“本地”命令替代方案。 当您想要操作本地用户时,这在使用集中身份验证的环境中非常有用(例如,它使用 luseradd 而不是 useradd)。 这将在调用命令之前检查/etc/passwd是否为现有帐户。如果本地帐户数据库存在于/etc/passwd之外的其他地方,则此设置将无法正常工作。 这要求上述命令以及/etc/passwd必须存在于目标主机上,否则将会出现错误。 与 groups 选项、 append 选项互斥 |
login_class string | 可选地设置用户的登录类,这是大多数BSD操作系统的特性。 | |
move_home boolean | · no ← · yes | 如果与 home 选项一起使用时设置为yes,则尝试将用户的旧主目录移动到指定的目录,如果该目录不存在且旧主目录存在。 |
name string required | 要创建、删除或修改的用户名。 | |
non_unique boolean | · no ← · yes | 当与 -u 选项一起使用时,该选项允许将用户ID更改为非惟一值。 |
password string | 可选地将用户密码设置为这个加密值。 在macOS系统上,这个值必须是明文的。注意安全问题。 要在Linux系统上创建一个禁用的帐户,请将其设置为 “!” 或 “"。 要在OpenBSD上创建一个禁用的帐户,请将其设置为 "************”。 | |
password_lock boolean | · no · yes | 锁定密码(usermod -L, usermod -U, pw lock)。 实现因平台而异。此选项并不总是意味着用户不能使用其他方法登录。 此选项不禁用用户,只锁定密码。 为解锁当前锁定的密码,值必须设置为False。不使用此参数将无法解锁密码。 目前支持Linux, FreeBSD, DragonFlyBSD, NetBSD, OpenBSD。 |
profile string | 设置用户的配置文件。 与其他平台一起使用时不执行任何操作。 可以使用逗号分隔设置多个概要文件。 要删除所有的配置文件,使用 profile=‘’。 目前在Illumos/Solaris上支持。 | |
remove boolean | · no ← · yes | 只影响 state=absent,它试图删除与用户关联的目录。 行为与 userdel --remove 相同。 |
role string | 设置用户的角色。 与其他平台一起使用时不执行任何操作。 可以使用逗号分隔设置多个角色。 如果要删除所有角色,请使用role=‘’。 目前在Illumos/Solaris上支持。 | |
seuser string | 可选地在启用selinux的系统上设置seuser类型(user_u)。 | |
shell string | 可选地设置用户的shell。 在Ansible 2.5之前的macOS上,非系统用户的默认shell是/usr/bin/false。从Ansible 2.5开始,macOS上非系统用户的默认shell是/bin/bash 在其他操作系统上,默认shell由所使用的底层工具决定。 | |
skeleton string | 可选地设置主框架目录。 需要 create_home 选项! | |
ssh_key_bits integer | Default:“default set by ssh-keygen” | 可选地指定要创建的SSH密钥的位数。 |
ssh_key_comment string | Default:“ansible-generated on $HOSTNAME” | 可选地为SSH密钥定义注释。 |
ssh_key_file path | 可选地指定SSH密钥文件名。 如果这是一个相对文件名,那么它将相对于用户的主目录。 该参数默认为 .ssh/id_rsa。 | |
ssh_key_passphrase string | 设置SSH密钥的密码。 如果没有提供密码短语,SSH密钥将默认为没有密码短语。 | |
ssh_key_type string | Default:‘rsa’ | 可选地指定要生成的SSH密钥类型。 可用的SSH密钥类型取决于目标主机上的实现。 |
state string | · present ← · absent | 无论该帐户是否存在,如果状态与所陈述的不一致,则采取行动。 |
system boolean | · no ← · yes | 在创建帐户 state=present 时,将此选项设置为 yes 将使用户成为系统帐户。 |
uid integer | 可选地设置用户的UID。 | |
update_password string | · always ← · on_create | always:如果密码不同,总是更新密码 on_create:只为新创建的用户设置密码 |
三、示例
###### 添加用户'johnd',具有特定的uid和主组'admin'
- name: Add the user 'johnd' with a specific uid and a primary group of 'admin'
user:
name: johnd
comment: John Doe
uid: 1040
group: admin
###### 使用bash shell添加用户'james',将组'admins'和'developers'附加到用户组中
- name: Add the user 'james' with a bash shell, appending the group 'admins' and 'developers' to the user's groups
user:
name: james
shell: /bin/bash
groups: admins,developers
append: yes
###### 删除用户 'johnd'
- name: Remove the user 'johnd'
user:
name: johnd
state: absent
remove: yes
###### 在~jsmith/.ssh/id_rsa目录下为用户jsmith创建2048位SSH密钥
- name: Create a 2048-bit SSH key for user jsmith in ~jsmith/.ssh/id_rsa
user:
name: jsmith
generate_ssh_key: yes
ssh_key_bits: 2048
ssh_key_file: .ssh/id_rsa
###### 增加帐户过期时间
- name: Added a consultant whose account you want to expire
user:
name: james18
shell: /bin/zsh
groups: developers
expires: 1422403387
###### 从Ansible 2.6开始,修改用户,删除过期时间
- name: Starting at Ansible 2.6, modify user, remove expiry time
user:
name: james18
expires: -1
官方文档:https://docs.ansible.com/ansible/2.9/modules/user_module.html#user-module