rembik.users

Rol de Ansible: Usuarios

Estado del Build Liberación de GitHub Rol de Ansible Descargas del Rol de Ansible

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:
  • present
  • absent
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:
  • no
  • yes
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
  • on_create
always actualizará las contraseñas si son diferentes. on_create solo establecerá la contraseña para los usuarios recién creados.
create_home Opciones:
  • yes
  • no
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:
  • no
  • yes
Si es yes, permite al usuario crear, editar, mostrar o eliminar archivos crontab. De lo contrario, no se permite modificar archivos crontab.
sudo Opciones:
  • no
  • yes
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:
  • no
  • yes
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:
  • no
  • yes
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:
  • no
  • yes
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:
  • present
  • absent
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

Python Ansible

Este rol se prueba periódicamente en las siguientes distribuciones de Linux:

Ansible Ansible Ansible
DockerDistro Check Check Check
DockerDistro Check Check Check
DockerDistro Check Check Check
DockerDistro Check Check Check
EC2Distro Check
DockerDistro Check Check Check
EC2Distro Check
DockerDistro Check Check Check
EC2Distro Check
DockerDistro Check Check Check
DockerDistro Check Check Check
DockerDistro Check
DockerDistro Check Check Check
EC2Distro Check

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

Acerca del proyecto

This role manages users and their groups on your system.

Instalar
ansible-galaxy install rembik.users
Licencia
apache-2.0
Descargas
83
Propietario