cans.user-make
cans.user-make
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 包定义了一个sudo
或sudoers
组,已经赋予其成员一些权限。当前机制主要用于在磁盘映像上预设高权限用户,以便于易于设置和配置,而不是用于管理细粒度用户或应用程序权限;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。