1it.users
Rol de Usuarios para Ansible
Este rol permite la gestión sencilla de cuentas de usuario en un sistema.
Desde v0.2
es posible controlar dónde crear una cuenta de usuario específica, configurando el grupo de hosts objetivo (por ejemplo, grupo de inventario, etiqueta EC2 u otra etiqueta en la nube).
Registro de Cambios
0.2.1 - 2021-11-08
Añadido:
Eliminar grupo de usuario
Eliminar directorio personal - delete_homedirs
0.2 - 2021-11-08
Cambiado:
target_hosts
ahora es obligatorio. Por favor, añade target_hosts: ['all']
a cada entrada de usuario si deseas crear este usuario en todos los hosts.
Eliminado:
users_keys
se eliminó debido a problemas de compatibilidad. Probablemente no se estaba usando en absoluto.
0.1 - 2021-10-27
Soluciones:
groups
debe omitirse por defecto, otros valores predeterminados.
Añadido:
Primera prueba de target_hosts
(no funciona).
Cambiado:
users.state
es obligatorio.
Requisitos
- Ansible 2.9.0 o superior
Variables
Las variables que se pueden pasar a este rol y una breve descripción sobre ellas son las siguientes:
# La lista de cuentas de usuario que se añadirán al sistema
users: []
# El shell predeterminado dado a todas las cuentas de usuario
users_default_shell: '/bin/bash'
# El grupo predeterminado al que se añadirán las nuevas cuentas de usuario
users_default_group: 'users'
# La bandera predeterminada para crear un grupo único por usuario o colocar
# todos los usuarios en el grupo predeterminado definido arriba
users_create_group_per_user: true
# La bandera predeterminada para crear directorios personales de usuario
users_create_homedir: true
# La lista de grupos predeterminados (a crear)
users_group_list: []
# Eliminar directorios personales al eliminar el usuario - deshabilitado por defecto
delete_homedirs: false
Estructura de la Lista de Usuarios
# La lista de cuentas de usuario que se añadirán al sistema
users:
# Primer usuario definiendo solo atributos requeridos
- username: 'johndoe' # Nombre de usuario en Linux
uid: 1000 # OPCIONAL ID de usuario (generalmente, los usuarios no del sistema comienzan en 1000)
authorized: [] # Lista de claves SSH públicas para añadir a la cuenta
target_hosts: ['dev'] # Lista de grupos de hosts de inventario donde debería existir la cuenta de usuario
state: 'present' # ESTADO requerido de la cuenta
# Segundo usuario definiendo todos los atributos disponibles
- username: 'janedoe' # Nombre de usuario en Linux
uid: 1001 # OPCIONAL ID de usuario (generalmente, los usuarios no del sistema comienzan en 1000)
authorized: # Lista de claves SSH públicas para añadir a la cuenta
- 'ssh-rsa key_string1'
- 'ssh-ecdsa key_string2'
name: 'Jane Doe' # Usado como comentario al crear la cuenta
system: false # Especificar si la cuenta será de usuario del sistema
group: 'jdoe' # Grupo primario alternativo específico del usuario
groups: # Grupos adicionales de usuario
- 'admin'
- 'developers'
shell: '/bin/bash' # Shell predeterminado para la cuenta
home: '/home/jdoe' # Ubicación alternativa del directorio personal para la cuenta
generate_key: true # Generar una nueva clave SSH para la cuenta
state: 'present'
# Cuentas desactivadas
- username: 'bob'
uid: 1003
authorized: []
target_hosts: ['dev']
state: absent
Ejemplo de Playbook
Creando un usuario administrador del sistema y un usuario desplegador:
--- # Este playbook prepara máquinas con usuarios comunes - name: Aplicar usuarios comunes a todos los nodos hosts: all roles: - { role: users, users: - username: 'sa' authorized: ['ssh-rsa key_string'] name: 'Administrador del Sistema' groups: ['admin'] target_hosts: - dev - stage - prod state: 'present' - username: 'ansible' name: 'Cuenta de servicio Ansible' generate_key: true authorized: [] state: 'present' # Advertencia - target_hosts debe definirse, de lo contrario, el usuario no será creado. # Usa ['all'] para crear un usuario en todos los hosts por defecto. target_hosts: ['all'] - username: 'johndoe' name: 'John Doe' generate_key: true authorized: [] target_hosts: ['dev'] state: 'present' }
Nota: Al crear una variable que contenga la lista de usuarios a agregar o eliminar, el mejor lugar para comenzar es en group_vars/all
. Intenta group_vars/groupname
o host_vars/hostname
si solo deseas usuarios en ciertas máquinas. target_hosts
es una lista de grupos de hosts, también podría ser una etiqueta en un inventario dinámico en la nube, como AWS/GCP/OtraNube, zona de disponibilidad, región, proyecto.
Dependencias
Licencia
MIT.
Ansible role for managing user accounts and authorized ssh-keys
ansible-galaxy install 1it.users