monolithprojects.user_management
用户管理
这个 Ansible 角色用于管理 Linux 用户(创建、编辑、删除)。 管理工作还包括 SSH 密钥的分发。
工作原理
这个角色在每个主机上使用本地事实来存储在 user_management
中列出的用户名。只有这些用户由此角色管理。一旦你从 user_management
列表中移除某个用户,系统将删除该用户及其主目录。user_management
列表中未列出的用户(即不是由此 Ansible 角色创建的用户)将不受影响。
此角色可以
- 创建用户
- 删除用户
- 编辑用户
- 管理 SSH 密钥
需求
支持的 Linux 发行版:
- CentOS/RHEL 7,8
- Debian 9,10
- Fedora 29,30,31,32
- Ubuntu 16,18,20
注意: 这些是每周测试的 Linux 发行版。此角色也很可能能在其他 Linux 发行版上正常运行。
角色变量
以下是 defaults/main.yml
的内容
local_facts_file: linux_users.fact
local_facts_path: /etc/ansible/facts.d
user_management:
# - name: userx <<< 用户名(必填)。
# comment: User X <<< (可选)用户描述。
# groups: <<< (可选)用户将被添加的组列表。
# - games
# - video
# ssh_keys: <<< (可选)受信任的公钥列表。
# - 'ssh-ed25519 xxxx something'
# shell: /bin/bash <<< (可选)用户登录的默认 shell(默认值为 "/bin/bash")。
# expires: -1 <<< (可选)用户过期日期,以 Epoch 格式表示(默认值为 "-1")。
# create_home: yes <<< (可选)创建主目录(默认值为 "yes")。
# system: no <<< (可选)创建系统账户(默认值为 "no")。
示例剧本:
在这个示例中,Ansible 将创建(或在不是第一次运行时编辑)3 个用户。user1
带有注释,默认 shell 为 zsh
,用户将在 1640991600
Unix 纪元时间到期,用户将被添加到 sudo
和 docker
组,最后添加两个 SSH 公钥。user2
将使用默认设置创建。appuser
将被创建为系统用户。
---
- name: 用户管理
hosts: all
user: ubuntu
gather_facts: yes
become: yes
vars:
user_management:
- name: user1
comment: 我的测试用户
shell: /bin/zsh
expires: 1640991600
groups:
- sudo
- docker
ssh_keys:
- 'ssh-ed25519 xxxxxx my_user_key'
- 'ssh-rsa xxxxxx my_user_key'
- name: user2
- name: appuser
system: yes
create_home: no
roles:
- ansible-user_management
许可证
MIT
作者信息
由 Michal Muransky 于 2020 年创建