1it.users
Ansible 用户角色
该角色可以简单地管理系统上的用户帐户。
从 v0.2
开始,可以通过设置目标主机组来控制创建特定用户帐户的位置(例如,清单组、EC2 标签或其他云标签)。
更新日志
0.2.1 - 2021-11-08
添加:
移除用户组
移除用户主目录 - delete_homedirs
0.2 - 2021-11-08
修改:
target_hosts
现在是必需的。如果您希望在所有主机上创建此用户,请在每个用户条目中添加 target_hosts: ['all']
。
移除:
由于兼容性问题,users_keys
被移除,可能根本没有被使用。
0.1 - 2021-10-27
修复:
默认情况下应省略 groups
,其他默认值。
添加:
第一次尝试 target_hosts
(未工作)。
修改:
users.state
是必需的。
要求
- Ansible 2.9.0 或更高版本
变量
可以传递给该角色的变量及其简要描述如下:
# 要添加到系统的用户帐户列表
users: []
# 所有用户帐户的默认 shell
users_default_shell: '/bin/bash'
# 新用户帐户将被添加到的默认组
users_default_group: 'users'
# 默认标志,用于指示是否为每个用户创建唯一组,还是将所有用户放入上面定义的默认组
users_create_group_per_user: true
# 默认标志,用于指示是否创建用户主目录
users_create_homedir: true
# 默认组列表(待创建)
users_group_list: []
# 用户删除时删除主目录 - 默认情况下禁用
delete_homedirs: false
用户列表结构
# 要添加到系统的用户帐户列表
users:
# 第一个用户,仅定义所需属性
- username: 'johndoe' # Linux 用户名
uid: 1000 # 可选 用户 ID(通常非系统用户从 1000 开始)
authorized: [] # 要添加到帐户的公钥 SSH 列表
target_hosts: ['dev'] # 用户帐户应存在的清单主机组列表
state: 'present' # 必需的帐户状态
# 第二个用户定义所有可用属性
- username: 'janedoe' # Linux 用户名
uid: 1001 # 可选 用户 ID(通常非系统用户从 1000 开始)
authorized: # 要添加到帐户的公钥 SSH 列表
- 'ssh-rsa key_string1'
- 'ssh-ecdsa key_string2'
name: 'Jane Doe' # 创建帐户时用作备注
system: false # 指定该帐户是否为系统用户
group: 'jdoe' # 备用用户特定主组
groups: # 额外的用户组
- 'admin'
- 'developers'
shell: '/bin/bash' # 帐户的默认 shell
home: '/home/jdoe' # 帐户的备用主目录位置
generate_key: true # 为帐户生成新的 SSH 密钥
state: 'present'
# 已注销的帐户
- username: 'bob'
uid: 1003
authorized: []
target_hosts: ['dev']
state: absent
剧本示例
创建系统管理员用户和部署用户:
--- # 该剧本为机器引导常用用户 - name: 将常用用户应用于所有节点 hosts: all roles: - { role: users, users: - username: 'sa' authorized: ['ssh-rsa key_string'] name: '系统管理员' groups: ['admin'] target_hosts: - dev - stage - prod state: 'present' - username: 'ansible' name: 'Ansible 服务帐户' generate_key: true authorized: [] state: 'present' # 注意:必须定义 target_hosts,否则用户将无法创建。 # 默认情况下,使用 ['all'] 以在所有主机上创建用户。 target_hosts: ['all'] - username: 'johndoe' name: 'John Doe' generate_key: true authorized: [] target_hosts: ['dev'] state: 'present' }
注意: 当创建包含要添加或删除的用户列表的变量时,最好的起始位置是在 group_vars/all
。如果您只希望在某些机器上添加用户,请尝试 group_vars/groupname
或 host_vars/hostname
。target_hosts
是主机组的列表,也可以是动态云清单中的标签,如 AWS/GCP/其他云、可用区、区域、项目。
依赖
许可
MIT。