freehck.user-func
用户功能
用户功能角色旨在以功能的方式配置用户:用户配置将与配置中描述的完全相同,并保证没有副作用。
描述
该角色的编写假设配置的主要入口点不是机器,而是用户。也就是说,我们不想在机器上创建用户,而是想给用户访问某些机器的权限。
你可以:
- 管理用户公钥数据库
- 为一个用户设置多个密钥
- 删除用户(家庭目录不会被删除)
- 锁定/解锁密码认证
- 每个主机或Ansible主机组设置本地配置
角色变量
参数分为全局和本地。如果参数在主机的字典中局部描述,则使用全局参数。如果全局参数没有描述,则使用默认值。
username:必需,指定机器上的用户名
hosts:必需参数,定义用户将访问的主机列表及其本地配置
give_sudo:sudo/wheel组被视为一个单独的参数,因为它极为重要。该参数决定是否给予用户启动sudo的权限。可以在本地主机配置中使用。默认值为否。
password:设置用户的密码。可以在本地配置中使用。
lock_password:设置密码锁定。如果设置为是,则不允许用户输入密码(在shadow中设置为'*')。可以在本地使用。默认值为否。
disable_user:阻止用户登录。如果设置为是,则该用户无法登录,包括ssh(默认shell设置为nologin)。可以在本地使用。默认值为否。
delete_user:删除用户(但不删除其家目录)。可以在本地使用。默认值为否。使用时请谨慎,最好完全不使用 - disable_user是更优的选择。
shell:指定用户的shell。可以在本地使用。默认值为/bin/bash。
ssh_public_keys:包含名称、全名字段(可选)和密钥的对象列表。这是一个包含所有已知密钥的基础,以便可以通过名称来操作它们。
authorized_keys:来自ssh_public_keys数据库的名称列表。根据该名称字段中的对象,其密钥将添加到.ssh/authorized_keys。可以在本地使用。默认值为[]。
common_groups:一个完全全局参数。指定所有将创建用户的主机上通用的组。建议设置为["users"],默认值为[]。不要将sudo添加到此处。对此使用give_sudo。
groups:一个完全本地参数。指定将在该特定主机上添加到common_groups的组。此处请勿添加sudo。对此使用give_sudo。
示例 1(简短)
manage-users.yml
- hosts:
- all
become: yes
become_user: root
vars_files:
- vars/ssh_public_keys.yml
vars:
common_groups: [ users ]
roles:
- tags: [ admins, freehck ]
role: user-func
username: freehck
give_sudo: yes
authorized_keys: [ freehck ]
hosts:
- host: all
- tags: [ special, jenkins ]
role: user-func
username: jenkins
authorized_keys: [ jenkins, jenkins-slave01, jenkins-slave02 ]
hosts:
- host: all
- host: jenkins-slave01
groups: [ docker ]
- tags: [ testers, tester ]
role: user-func
username: tester
authorized_keys: [ tester ]
hosts:
- host: stand01
- host: stand02
- host: db01
vars/ssh_public_keys.yml
ssh_public_keys:
- name: freehck
fullname: Dmitrii Kashin
key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPSD4/7GDGnHuFr/p/ZmDoW0RZ/3bHvoI/s5WwOpARJuqgnzj2CyfiPxkKzvCuncUq8O8FfjnAyyj7pEIV2MSEQnxzoFDfcJHRH4sw68TLlGENUvQjtTqrZQ2fyZ6Nu7dktq4A3aOxV0rVZa2oJMA1V1LFj5y9u9B4Sj1pSuY0HkAF1XHJDyBQUs8ncrBkwakqCw0wKI7aLC6tph4whFzJqs8LSnwrR6kMMyVC2xjaw8vczM1wcYVfc6lPN7tWJTH3GrjQRdEYEJo3VqInoiQ9OKb171fMrp9N1u6a88ffTDdX3Jlgm8MRSItuGkdJ9tNXke/hq7GuKmavx7sMf34d freehck
- name: jenkins
key: ...
- name: jenkins-slave01
key: ...
- name: jenkins-slave02
key: ...
示例 2(包含所有可能的选项)
- role: user-func
username: freehck # 必需
give_sudo: no
password: "mysecret"
lock_password: no
disable_user: no
delete_user: no
shell: "/bin/bash"
common_groups: [ "users" ]
authorized_keys: [ key_name, ... ]
ssh_public_keys:
- name: freehck
fullname: Dmitrii Kashin
key: <public-key>
hosts: # 必需
- host: host-or-inventory-group # 必需
give_sudo: yes
password: "mysecret"
lock_password: no
disable_user: no
delete_user: no
shell: "/bin/zsh"
groups: [ "vboxusers" ]
authorized_keys: [ key_name, ... ]
- host: host-or-inventory-group
...
许可证
GPLv3+
作者信息
该角色由Dmitrii Kashin(又名freehck)编写