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