cans.user-make

cans.user-make

Estado de construcción Ansible Galaxy Licencia

Rol de Ansible para crear varios usuarios en los hosts de destino.

¿Cómo funciona?

Cada usuario que se va a crear debe estar definido con un elemento como se muestra a continuación:

usermake_users:
  - name: "johndoe"                # obligatorio
    gecos: "John Doe,,,"           # predeterminado: omitir
    groups: "sudo,adm"             # predeterminado: omitir
    passwordless_sudo: true        # predeterminado: usermake_sudoer_passwordless
    ssh_key_create: false          # predeterminado: true
    ssh_key_upload_to_ec2: true    # predeterminado: usermake_ssh_key_upload_to_ec2
    ssh_key_download: true         # predeterminado: usermake_ssh_key_download
    sudoer: true                   # predeterminado: usermake_sudoer
    system: false                  # predeterminado: false
    upload_my_key: false           # predeterminado: usermake_upload_ssh_key_to_target
    remove: false                  # predeterminado: omitir o usermake_remove
    home_dir: "/home/jdoe"         # predeterminado: usermake_home_base_dir/name

Aquí está el significado de cada variable encontrada en el elemento:

  • name: el nombre de inicio de sesión para el nuevo usuario;
  • gecos: los datos de GECOS que se adjuntan al nuevo usuario;
  • groups: la lista de grupos a los que debería pertenecer el usuario. Los grupos listados aquí se supone que existen a priori (ver también la sección siguiente);
  • passwordless_sudo: cuando está configurado como true, el usuario podrá asumir la identidad de otro usuario sin escribir ninguna contraseña;
  • remove: cuando el valor state del elemento es 'absent', indica si se deben eliminar los archivos propiedad del usuario cuando se borra su cuenta (puede ser lento);
  • ssh_key_create: si generar o no un par de claves SSH para el nuevo usuario;
  • ssh_key_download: si descargar o no la clave pública SSH generada del usuario a una carpeta en la máquina local (ver también el usermake_ssh_key_download_dir definido a continuación).
  • ssh_key_upload_to_ec2: si subir o no la clave pública SSH generada del usuario al sistema de gestión de claves de AWS EC2.
  • state: si crear () o eliminar () al usuario indicado con los valores 'present' o 'absent' respectivamente (predeterminado: 'present');
  • sudoer: si está configurado como true, el usuario obtendrá privilegios de sudo (ver también la variable usermake_sudoer);
  • system: si el usuario debería ser un usuario del sistema (con un número de UID bajo y acceso de inicio de sesión deshabilitado);
  • upload_my_key: si subir o no tu clave SSH local al host de destino.

Todos estos valores, si se definen, sobrescribirán los valores predeterminados definidos en la sección de variables del rol más abajo.

¿Qué no puede hacer este rol?

No puede agregar usuarios a nuevos grupos, sobrescribirá los grupos del usuario con la lista de grupos dada.

Requisitos

Este rol no tiene requisitos específicos.

Variables del rol

Todos los nombres de variables utilizados en este rol están organizados con el prefijo usermake_.

  • usermake_home_base_dir: te permite sobrescribir la ruta del directorio donde se crean los hogares de los usuarios (predeterminado: /home);
  • usermake_remove: si eliminar o no el directorio de inicio de los usuarios cuando se eliminan (predeterminado: false);
  • usermake_ssh_key_create: si crear o no un par de claves SSH para los nuevos usuarios por defecto (predeterminado: true);
  • usermake_ssh_key_download: si descargar las claves SSH generadas de los usuarios localmente;
  • usermake_ssh_key_download_dir: el directorio donde almacenar las claves públicas SSH descargadas (predeterminado: {{ playbook_dir }}/collected-keys);
  • usermake_ssh_key_download_dir_mode: el modo del directorio donde almacenar las claves públicas SSH descargadas (predeterminado: 0750);
  • usermake_ssh_key_passphrase: las contraseñas predeterminadas para cifrar las claves privadas SSH. No se recomienda depender de esto. Debes proporcionar contraseñas de otras maneras. (predeterminado: omit [sin contraseña]);
  • usermake_sudoer: si los usuarios creados deberían ser sudoers por defecto (predeterminado: false); Nota: Antes de otorgar privilegios elevados a cualquier usuario con esto, considera que las distribuciones proporcionan un paquete sudo que define un grupo sudo o sudoers que ya otorga algunos privilegios a sus miembros. El mecanismo presente está más destinado a preconfigurar usuarios de alto privilegio en imágenes de disco para facilitar la configuración y aprovisionamiento, y no para gestionar privilegios de usuario o aplicación con fineza;
  • usermake_sudoer_dir: directorio en las máquinas de destino donde colocar los archivos de reglas de sudoer (predeterminado: /etc/sudoers.d)
  • usermake_system: si los usuarios creados deberían ser usuarios del sistema por defecto (predeterminado: false);
  • usermake_upload_ssh_key_to_target: si subir o no la clave pública SSH local del usuario al host de destino. Útil si planeas realizar tareas como ese usuario en las siguientes tareas o roles de tu playbook (predeterminado: true);
  • usermake_upload_ssh_key_file: cuando usermake_upload_ssh_key_to_target o el valor upload_my_key de un elemento de usuario es true, apunta al archivo donde leer la clave pública para subir (predeterminado: ~/.ssh/id_rsa.pub);
  • usermake_user_groups: los grupos a los que asignar por defecto los usuarios creados (predeterminado: omit);
  • usermake_users: la lista de usuarios a crear, definida con elementos como se describió anteriormente (predeterminado: []);

Dependencias

Este rol no tiene dependencias.

Ejemplo de Playbook

Creando algunos usuarios:

- hosts: servers
  roles:
     - role: cans.user-make
       usermake_users:
         - name: "alice"
           groups: "sudo,adm"
           system: "no"
           ssh_key_create: "yes"
         - name: "bob"
           gecos: "Bob no sponge,,,"
           system: "yes"
           ssh_key_create: true

Eliminando algunos usuarios:

- hosts: servers
  roles:
    - role: cans.user-make
      usermake_users:
        - name: "alice"
          state: "absent"
          remove: true  # Eliminar todos los archivos del usuario
        - name: "bob"
          state: "absent"

También puedes echar un vistazo a las pruebas encontradas en tests/test.yml para muchos más ejemplos de uso (esperemos que exhaustivos) de este rol.

Por hacer

Implementar pruebas de integración para la carga de claves en AWS.

Licencia

GPLv2

Información del autor

Copyright © 2017, Nicolas CANIART.

Acerca del proyecto

Simple Role to create a given list of users

Instalar
ansible-galaxy install cans.user-make
Licencia
gpl-2.0
Descargas
149
Propietario