singleplatform-eng.users

构建状态

ansible-users

管理系统用户的角色。

角色配置

  • users_create_per_user_group (默认: true) - 在创建用户时,同时创建一个同用户名的组,并将该组设为用户的主要组。
  • users_group (默认: users) - 如果没有设置 users_create_per_user_group,则这是所有创建用户的主要组。
  • users_default_shell (默认: /bin/bash) - 如果没有为用户指定默认Shell,则使用该默认值。
  • users_create_homedirs (默认: true) - 为新用户创建主目录。如果您单独管理主目录,请将其设置为 false。
  • authorized_keys_file (默认: .ssh/authorized_keys) - 如果 SSH 服务器配置使用非标准的授权密钥文件,请设置此项。

创建用户

添加一个包含要添加用户列表的 users 变量。可以将此放在 group_vars/allgroup_vars/groupname 中,如果您只想在特定机器上使用这些用户。

每个用户需要以下属性:

  • username - 用户的用户名。
  • name - 用户的全名(gecos 字段)。
  • home - 要创建的用户主目录(可选,默认是 /home/username)。
  • uid - 用户的数字用户 ID(可选)。这是确保系统间 UID 一致性的必要项。
  • gid - 组的数字组 ID(可选)。否则,将使用 uid。
  • password - 如果提供了哈希值,将使用该值;否则帐户将被锁定。
  • update_password - 这可以是 'always' 或 'on_create'
    • 'always' 在密码不同的情况下会更新密码。(默认)
    • 'on_create' 仅在创建新用户时设置密码。
  • group - 可选的主要组覆盖。
  • groups - 用户的附加组列表。
  • append - 如果为“是”,则只添加组,而不会将其设置为仅在 groups 列表中的组(可选)。
  • profile - 用于设置自定义 Shell 配置文件的字符串块。
  • ssh_key - 这应该是用户的 SSH 密钥列表(可选)。每个 SSH 密钥应直接包含,没有换行。
  • generate_ssh_key - 是否为用户生成 SSH 密钥(可选,默认否)。

此外,每个用户的以下项目是可选的:

  • shell - 用户的 Shell。默认是 /bin/bash。如果您想为所有用户提供相同的 Shell,可以使用 users_default_shell 变量进行配置,但它会与 /bin/bash 不同。

示例:

---
users:
  - username: foo
    name: Foo Barrington
    groups: ['wheel','systemd-journal']
    uid: 1001
    home: /local/home/foo
    profile: |
      alias ll='ls -lah'
    ssh_key:
      - "ssh-rsa AAAAA.... foo@machine"
      - "ssh-rsa AAAAB.... foo2@machine"
groups_to_create:
  - name: developers
    gid: 10000
users_deleted:
  - username: bar
    name: Bar User
    uid: 1002

删除用户

users_deleted 变量包含一列表的不再需要在系统中的用户,这些用户将在下次 Ansible 运行时被删除。格式与添加用户的格式相同,但唯一必填字段是 username。不过,建议您保留 uid 字段以备参考,以避免数字用户 ID 被意外重用。

您可以选择通过 remove 参数删除用户的主目录和邮件存储,并通过 force 参数强制删除文件。

users_deleted:
  - username: bar
    uid: 1002
    remove: yes
    force: yes
关于项目

User creation role

安装
ansible-galaxy install singleplatform-eng.users
许可证
mit
下载
8.5M
拥有者
Open source code from the SinglePlatform Engineering team.