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

剧本示例

  1. 创建系统管理员用户和部署用户:

    ---
    # 该剧本为机器引导常用用户
    
    - 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/groupnamehost_vars/hostnametarget_hosts 是主机组的列表,也可以是动态云清单中的标签,如 AWS/GCP/其他云、可用区、区域、项目。

依赖

许可

MIT。

关于项目

Ansible role for managing user accounts and authorized ssh-keys

安装
ansible-galaxy install 1it.users
许可证
mit
下载
366
拥有者
Site Reliability Engineer