rembik.users

Ansible 角色:用户

构建状态 GitHub 发布 Ansible 角色 Ansible 角色下载

该角色用于管理系统上的用户及其组。

要求

  • 访问包含包的仓库,通常在互联网上。
  • 最新版本的 Ansible(已测试最后两个稳定版本)。

可以安装以下角色以确保满足所有要求,使用 ansible-galaxy install -r requirements.yml

---
- rembik.bootstrap

角色变量

这些默认值在 defaults/main.yml 中设置:

---
# 用户的默认设置

# 默认值,是否为每个用户创建一个组
# 并将其设为主要组
users_group_per_user: yes
# 如果没有为每个用户创建组,则这是所有用户所属的默认主要
# 组
users_group: users
# 默认值,是否在创建账户时为用户创建主目录
# 或在主目录不存在时
users_create_home: yes
# 当 sudo 设置为 yes 时,用户的默认 sudo 选项,
# 但未指定其它选项
users_sudo_options: "ALL=(ALL) NOPASSWD: ALL"
# 用户的默认 shell,当未指定时
users_shell: /bin/bash
# 查找/存储生成的 ssh 密钥的本地目录
users_ssh_key_dir: ssh_keys

# 要创建、删除或修改的用户列表
users: []

# 要创建或删除的用户组列表
users_groups: []

如果只希望在特定机器上定义用户和组,可以将这些变量的替换放在 group_vars/allgroup_vars/group_name 中。

users 变量包含要创建、删除或修改的用户列表。 列表中的每个用户都定义为字典。 每个用户字典可用的参数如下:

用户参数 选项 / 默认值 备注
name 必填 要创建、删除或修改的用户的名称。
state 选项:
  • present
  • absent
账户是否应该存在,如果状态与声明的不一致则采取行动。
comment 可选地设置用户账户的描述(即 GECOS)。
uid 可选地设置用户的 UID。
group 默认: user.name 可选地覆盖从 users_group_per_user=yesusers_group 获取的用户主要组(接受组名)。
gid 此设置仅影响 users_group_per_user=yes。可选地设置用户主要组的不同 GID。否则将使用 UID。
groups 用户将被添加到的组列表。当设置为空字符串时,用户从所有组中移除,除了主要组。
append 选项:
  • no
  • yes
如果 yes,将用户添加到 groups 中指定的组。如果 no,则用户仅被添加到 groups 中指定的组,从所有其他组中移除。
password 默认: ! 可选地将用户的密码设置为此加密值。否则用户账户将被锁定。
update_password 选项:
  • always
  • on_create
always 将更新不同的密码。on_create 仅为新创建的用户设置密码。
create_home 选项:
  • yes
  • no
可选地覆盖从 users_create_home 获取的值。除非设置为 no,否则在创建账户时或主目录不存在时,将为用户创建主目录。
home 默认: /home/user.name 可选地设置用户的主目录。
shell 默认: /bin/bash 可选地覆盖从 users_shell 获取的用户 shell。
profile 可选地在用户的配置文件中设置自定义块。 需要 user.create_home=yes!
cron 选项:
  • no
  • yes
如果 yes,允许用户创建、编辑、显示或删除 crontab 文件。否则,不允许修改 crontab 文件。
sudo 选项:
  • no
  • yes
如果 yes,设置用户的 sudo 选项,取自 user.sudo_options。否则,移除用户的 sudo 选项。
sudo_options 默认: ALL=(ALL) NOPASSWD: ALL 可选地覆盖从 users_sudo_options 获取的用户 sudo 选项。
ssh_key 用户授权的 SSH 密钥列表(接受公钥;直接包含且不带换行符)。当设置为空列表或字符串时,移除所有用户授权的 SSH 密钥。 需要 user.create_home=yes!
generate_ssh_key 选项:
  • no
  • yes
除非设置为 no,如果本地目录 users_ssh_key_dir 中不存在 SSH 密钥,则生成用户的 SSH 密钥对。之后,将其添加到用户的授权 SSH 密钥并将密钥对部署到用户。 需要 user.create_home=yes!
remove 选项:
  • no
  • yes
仅影响 user.state=absent,它尝试移除与用户关联的目录。行为与 userdel --remove 相同,检查手册页以获取详细信息和支持。
force 选项:
  • no
  • yes
仅影响 user.state=absent,它在受支持的平台上强制移除用户和关联目录。行为与 userdel --force 相同,检查手册页以获取详细信息和支持。

users_groups 变量包含要创建或删除的用户组列表。列表中的每个组都定义为字典。 每个组字典可用的参数如下:

组参数 选项 / 默认值 备注
name 必填 要管理的组的名称。
state 选项:
  • present
  • absent
该组是否应该存在于远程主机上。
gid 可选 GID 设置给组。

依赖关系

一般而言,该角色没有依赖关系。结合推荐的角色 rembik.bootstrap,该角色在必要时使用定义的 bootstrap_user 连接到远程主机并执行角色任务。

示例剧本

此示例取自 molecule/playbook.yml

---
- name: Converge
  hosts: all
  gather_facts: no
  become: yes

  roles:
    - role: rembik.bootstrap
    - role: rembik.users
      vars:
        users_ssh_key_dir: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}/ssh_key"
        users_groups:
          - name: users
          - name: bin
        users:
          - name: nouser
            comment: 无用户
            create_home: no
          - name: molecule
            comment: Ansible 测试用户
            uid: 2001
            home: /home/test
            cron: yes
            sudo: yes
            generate_ssh_key: yes
          - name: administrator
            comment: 管理员
            uid: 2002
            groups: [users]
            cron: yes
            sudo: yes
            profile: |
              alias ll='ls -lah'
              alias cp='cp -iv'
            ssh_key:
              - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABWBILQeRSYYmGea/WIf6kd... [email protected]"
          - name: user
            comment: 用户
            uid: 2003
            groups: [users]
            shell: /bin/sh
            generate_ssh_key: yes

角色测试

Python Ansible

该角色定期在以下 Linux 发行版上测试:

Ansible Ansible Ansible
DockerDistro 检查 检查 检查
DockerDistro 检查 检查 检查
DockerDistro 检查 检查 检查
DockerDistro 检查 检查 检查
EC2Distro 检查
DockerDistro 检查 检查 检查
EC2Distro 检查
DockerDistro 检查 检查 检查
EC2Distro 检查
DockerDistro 检查 检查 检查
DockerDistro 检查 检查 检查
DockerDistro 检查
DockerDistro 检查 检查 检查
EC2Distro 检查

星号意味着构建允许失败,标记为实验构建。

贡献

如果您发现问题,请在此 GitHub 项目问题页面 注册,或者考虑按照此 指导 贡献代码。

许可证

Apache-2.0

作者信息

安装
ansible-galaxy install rembik.users
许可证
apache-2.0
下载
83
拥有者