rembik.users
Rol de Ansible: Usuarios
Este rol gestiona usuarios y sus grupos en tu sistema.
Requisitos
- Acceso a un repositorio que contenga paquetes, probablemente en Internet.
- Una versión reciente de Ansible (probada en las 2 versiones principales estables más recientes).
Los siguientes roles se pueden instalar para asegurar que se cumplan todos los requisitos, usando ansible-galaxy install -r requirements.yml
:
---
- rembik.bootstrap
Variables del Rol
Estos valores predeterminados están establecidos en defaults/main.yml
:
---
# archivo de valores predeterminados para usuarios
# El valor predeterminado, si se debe crear un grupo para cada usuario
# y hacer que ese sea su grupo principal
users_group_per_user: yes
# Si no se crea un grupo por usuario, entonces este es el grupo principal
# al que pertenecen todos los usuarios
users_group: users
# El valor predeterminado, si se debe crear un directorio home para el usuario
# cuando se crea la cuenta o si el directorio home no existe
users_create_home: yes
# Las opciones sudo predeterminadas para el usuario cuando sudo se establece en yes,
# pero no se especifican ninguna
users_sudo_options: "ALL=(ALL) NOPASSWD: ALL"
# El shell predeterminado para el usuario cuando no se especifica ninguno
users_shell: /bin/bash
# El directorio local para encontrar/almacenar las claves ssh generadas
users_ssh_key_dir: ssh_keys
# Listas de usuarios para crear, eliminar o modificar
users: []
# Lista de grupos de usuarios para crear o eliminar
users_groups: []
Un buen lugar para poner reemplazos para estas variables es en group_vars/all
o group_vars/nombre_del_grupo
,
si solo deseas que los usuarios y grupos definidos estén en ciertas máquinas.
La variable users
contiene la lista de usuarios a crear, eliminar o modificar.
Cada usuario en esta lista se define como un diccionario.
Los siguientes parámetros están disponibles para cada diccionario de usuario:
Parámetro del Usuario | Opciones / Predeterminados | Comentarios |
---|---|---|
name requerido |
Nombre del usuario a crear, eliminar o modificar. | |
state |
Opciones:
|
Si la cuenta debe existir o no, tomando acción si el estado es diferente a lo indicado. |
comment |
Opcionalmente establece la descripción (también conocida como GECOS) de la cuenta de usuario. | |
uid |
Opcionalmente establece el UID del usuario. | |
group |
Predeterminado: user.name |
Opcionalmente sobrescribe el grupo principal del usuario tomado de users_group_per_user=yes o users_group (toma un nombre de grupo). |
gid |
Esto solo afecta a users_group_per_user=yes . Opcionalmente establece un GID diferente para el grupo principal del usuario. De lo contrario, se utilizará el UID. |
|
groups |
Lista de grupos a los que se añadirá el usuario. Al establecerlo como una cadena vacía, el usuario se eliminará de todos los grupos excepto el grupo principal. | |
append |
Opciones:
|
Si se establece en yes, añade al usuario a los grupos especificados en groups . Si es no, el usuario solo se añadirá a los grupos especificados en groups , eliminándolo de todos los demás grupos. |
password |
Predeterminado: ! | Opcionalmente establece la contraseña del usuario a este valor encriptado. De lo contrario, la cuenta de usuario quedará bloqueada. |
update_password |
Opciones:
|
always actualizará las contraseñas si son diferentes. on_create solo establecerá la contraseña para los usuarios recién creados. |
create_home |
Opciones:
|
Opcionalmente sobrescribe este valor tomado de users_create_home . A menos que se establezca en no, se creará un directorio home para el usuario cuando se cree la cuenta o si el directorio home no existe. |
home |
Predeterminado: /home/user.name |
Opcionalmente establece el directorio home del usuario. |
shell |
Predeterminado: /bin/bash | Opcionalmente sobrescribe el shell del usuario tomado de users_shell . |
profile |
Opcionalmente establece un bloque personalizado en el perfil del usuario. ¡Requiere user.create_home=yes ! |
|
cron |
Opciones:
|
Si es yes, permite al usuario crear, editar, mostrar o eliminar archivos crontab. De lo contrario, no se permite modificar archivos crontab. |
sudo |
Opciones:
|
Si es yes, establece las opciones sudo del usuario tomadas de user.sudo_options . De lo contrario, elimina las opciones sudo del usuario. |
sudo_options |
Predeterminado: ALL=(ALL) NOPASSWD: ALL | Opcionalmente sobrescribe las opciones sudo del usuario tomadas de users_sudo_options . |
ssh_key |
Lista de las claves SSH autorizadas del usuario (toma claves SSH públicas; incluidas directamente y sin saltos de línea). Al establecerla como una lista o cadena vacía, se eliminan todas las claves SSH autorizadas del usuario. ¡Requiere user.create_home=yes ! |
|
generate_ssh_key |
Opciones:
|
A menos que se establezca en no, genera el par de claves SSH del usuario, si la clave SSH no existe en el directorio local users_ssh_key_dir . Después, añádela a las claves SSH autorizadas del usuario y despliega el par de claves SSH al usuario. ¡Requiere user.create_home=yes ! |
remove |
Opciones:
|
Esto solo afecta a user.state=absent , intenta eliminar los directorios asociados con el usuario. El comportamiento es el mismo que userdel --remove, consulta la página del manual para más detalles y soporte. |
force |
Opciones:
|
Esto solo afecta a user.state=absent , fuerza la eliminación del usuario y de los directorios asociados en plataformas compatibles. El comportamiento es el mismo que userdel --force, consulta la página del manual para más detalles y soporte. |
La variable users_groups
contiene la lista de grupos de usuarios a crear o eliminar.
Cada grupo en esta lista se define como un diccionario.
Los siguientes parámetros están disponibles para cada diccionario de grupo:
Parámetro del Grupo | Opciones / Predeterminados | Comentarios |
---|---|---|
name requerido |
Nombre del grupo a gestionar. | |
state |
Opciones:
|
Si el grupo debe estar presente o no en el host remoto. |
gid |
GID opcional a establecer para el grupo. |
Dependencias
En general, este rol no tiene dependencias. En combinación con el rol recomendado rembik.bootstrap
, este rol utiliza el bootstrap_user
definido (si es necesario) para conectarse al host remoto y ejecutar las tareas de este rol.
Ejemplo de Playbook
Este ejemplo se toma de molecule/playbook.yml
:
---
- name: Convergencia
hosts: all
gather_facts: no
become: yes
roles:
- role: rembik.bootstrap
- role: rembik.users
vars:
users_ssh_key_dir: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}/ssh_key"
users_groups:
- name: users
- name: bin
users:
- name: nouser
comment: Sin Usuario
create_home: no
- name: molecule
comment: Usuario de Prueba de Ansible
uid: 2001
home: /home/test
cron: yes
sudo: yes
generate_ssh_key: yes
- name: administrator
comment: Administrador
uid: 2002
groups: [users]
cron: yes
sudo: yes
profile: |
alias ll='ls -lah'
alias cp='cp -iv'
ssh_key:
- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABWBILQeRSYYmGea/WIf6kd... [email protected]"
- name: user
comment: Usuario
uid: 2003
groups: [users]
shell: /bin/sh
generate_ssh_key: yes
Pruebas del Rol
Este rol se prueba periódicamente en las siguientes distribuciones de Linux:
Los asteriscos significan que se permite que la compilación falle, se marca como una compilación experimental.
Contribuciones
Si encuentras problemas, regístralos en esta página de problemas del proyecto en GitHub o considera contribuir con código siguiendo esta guía.
Licencia
Apache-2.0
Información del Autor
This role manages users and their groups on your system.
ansible-galaxy install rembik.users