cans.user-make

cans.user-make

构建状态 Ansible Galaxy 许可证

Ansible 角色,用于在目标主机上创建多个用户

如何工作?

每个要创建的用户必须使用以下格式定义一个条目:

usermake_users:
  - name: "johndoe"                # 必填
    gecos: "John Doe,,,"           # 默认:省略
    groups: "sudo,adm"             # 默认:省略
    passwordless_sudo: true        # 默认:usermake_sudoer_passwordless
    ssh_key_create: false          # 默认:true
    ssh_key_upload_to_ec2: true    # 默认:usermake_ssh_key_upload_to_ec2
    ssh_key_download: true         # 默认:usermake_ssh_key_download
    sudoer: true                   # 默认:usermake_sudoer
    system: false                  # 默认:false
    upload_my_key: false           # 默认:usermake_upload_ssh_key_to_target
    remove: false                  # 默认:省略或 usermake_remove
    home_dir: "/home/jdoe"         # 默认:usermake_home_base_dir/name

条目中每个变量的含义如下:

  • name: 新用户的登录名;
  • gecos: 附加到新用户的 GECOS 数据;
  • groups: 用户应属于的组列表。这里列出的组必须事先存在(见下一个部分 无法实现的功能
  • passwordless_sudo: 设置为 true 时,用户可以在不输入密码的情况下切换为其他用户身份;
  • remove: 当条目的 state 值为 'absent' 时,指示是否在删除账户时删除该用户拥有的文件(可能会很慢);
  • ssh_key_create: 是否为新用户生成 SSH 密钥对;
  • ssh_key_download: 是否将生成的用户 SSH 公钥下载到本地机器的文件夹(也请参见下面定义的 usermake_ssh_key_download_dir)。
  • ssh_key_upload_to_ec2: 是否将用户生成的 SSH 公钥上传到 AWS EC2 密钥管理系统。
  • remove
  • state: 指示是否创建( 'present' )或删除( 'absent' )指定的用户(默认: 'present' );
  • sudoer: 设置为 true 时,用户将获得 sudo 权限(也请参见 usermake_sudoer 变量);
  • system: 用户是否应该是系统用户(具有较低的 UID 编号并禁用登录);
  • upload_my_key: 是否将本地 SSH 公钥上传到目标主机。

所有这些值,如果定义,将覆盖下面 角色变量 部分中定义的默认值。

此角色无法执行什么?

该角色无法将用户添加到新组中,它将用给定的组列表覆盖用户的组信息。

要求

此角色没有特定要求。

角色变量

此角色中使用的所有变量名称都以前缀 usermake_ 命名空间。

  • usermake_home_base_dir: 允许您覆盖创建用户家目录的路径(默认: /home);
  • usermake_remove: 删除用户时是否删除其家目录(默认: false );
  • usermake_ssh_key_create: 是否默认为新用户创建 SSH 密钥对(默认: true );
  • usermake_ssh_key_download: 是否将创建的用户的 SSH 密钥下载到本地;
  • usermake_ssh_key_download_dir: 存储下载的公共 SSH 密钥的目录(默认: {{ playbook_dir }}/collected-keys );
  • usermake_ssh_key_download_dir_mode: 存储下载的公共 SSH 密钥的目录权限(默认: 0750 );
  • usermake_ssh_key_passphrase: 加密 SSH 私钥的默认密码。建议不要依赖此,应通过其他方式提供密码。(默认: omit [无密码]);
  • usermake_sudoer: 创建的用户是否默认为 sudoer(默认: false ); 注意:在授予任何用户提升权限之前,请确保发行版提供的 sudo 包定义了一个 sudosudoers 组,已经赋予其成员一些权限。当前机制主要用于在磁盘映像上预设高权限用户,以便于易于设置和配置,而不是用于管理细粒度用户或应用程序权限;
  • usermake_sudoer_dir: 目标机器上放置 sudoer 规则文件的目录(默认: /etc/sudoers.d
  • usermake_system: 创建的用户是否默认为系统用户(默认: false );
  • usermake_upload_ssh_key_to_target: 是否将本地用户的 SSH 公钥上传到目标主机。如果您计划在下一个任务或角色中以该用户身份执行任务,则此设置很有用(默认: true );
  • usermake_upload_ssh_key_file: 当 usermake_upload_ssh_key_to_target 或用户条目的 upload_my_key 值为 true 时,指向要上传的公钥文件(默认: ~/.ssh/id_rsa.pub );
  • usermake_user_groups: 默认分配给创建用户的组(默认: omit );
  • usermake_users: 要创建的用户列表,以如上所述的条目定义(默认: [] );

依赖关系

此角色没有依赖关系

示例剧本

创建一些用户:

- hosts: servers
  roles:
     - role: cans.user-make
       usermake_users:
         - name: "alice"
           groups: "sudo,adm"
           system: "no"
           ssh_key_create: "yes"
         - name: "bob"
           gecos: "Bob no sponge,,,"
           system: "yes"
           ssh_key_create: true

删除一些用户:

- hosts: servers
  roles:
    - role: cans.user-make
      usermake_users:
        - name: "alice"
          state: "absent"
          remove: true  # 删除所有用户文件
        - name: "bob"
          state: "absent"

您可能还想查看 tests/test.yml 中的测试,以获取此角色的更多(希望是详尽的)使用示例。

待办事项

实现针对 AWS 密钥上传的集成测试。

许可证

GPLv2

作者信息

版权所有 © 2017, Nicolas CANIART。

关于项目

Simple Role to create a given list of users

安装
ansible-galaxy install cans.user-make
许可证
gpl-2.0
下载
149
拥有者