freehck.user-func
user-func
El rol user-func tiene como objetivo configurar usuarios de manera funcional: la configuración del usuario será exactamente la misma que se describe en la configuración y se garantiza que no tendrá efectos secundarios.
Descripción
El rol se escribió bajo la suposición de que el punto de entrada principal para la configuración no es la máquina, sino el usuario. Es decir, no queremos crear un usuario en la máquina, sino dar acceso al usuario a ciertas máquinas.
Puedes:
- gestionar tu base de datos de claves públicas de usuario
- establecer múltiples claves para un mismo usuario
- eliminar usuarios (no se eliminan los directorios personales)
- bloquear/desbloquear la autenticación por contraseña
- establecer configuración local por host o grupo de hosts de Ansible
Variables del Rol
Los parámetros se dividen en globales y locales. Si el parámetro se describe localmente para el host (en el diccionario de hosts), se toma el parámetro global. Si el parámetro global no está descrito, se toma el valor predeterminado.
username: Requerido, especifica el nombre de usuario en la máquina.
hosts: parámetro obligatorio, define la lista de hosts a los que el usuario tendrá acceso y su configuración local.
give_sudo: el grupo sudo/wheel se toma como un parámetro separado dada su importancia excepcional. Este parámetro determina si se le da al usuario el derecho de iniciar sudo o no. Se puede usar en la configuración local del host. Predeterminado no.
password: establece la contraseña para el usuario. Se puede usar en la configuración local.
lock_password: establece el bloqueo de la contraseña. Si se establece en sí, no se permite que el usuario ingrese la contraseña (en shadow se establece '*'). Puede usarse localmente. Predeterminado no.
disable_user: bloquea el inicio de sesión del usuario. Si se establece en sí, no se puede ingresar como el usuario dado, incluido SSH (se instala el shell predeterminado en nologin). Puede usarse localmente. Predeterminado no.
delete_user: elimina el usuario (pero no su directorio personal). Puede usarse localmente. Predeterminado no. Úsalo con precaución y es mejor no usarlo en absoluto; disable_user es la opción preferida.
shell: Especifica el shell para el usuario. Puede usarse localmente. El predeterminado es /bin/bash.
ssh_public_keys: lista de objetos con los campos nombre, nombre completo (opcional) y clave. Es una base de datos con todas las claves conocidas para que sea posible operar con ellas por nombre.
authorized_keys: lista de nombres de la base de datos ssh_public_keys. Con este nombre en el campo nombre de un objeto en la base de datos, su clave se agrega a .ssh/authorized_keys. Puede usarse localmente. Predeterminado [].
common_groups: un parámetro exclusivamente global. Especifica grupos que son comunes para todos los hosts en los que se creará el usuario. Se recomienda establecer ["users"], por defecto []. No añadas sudo a esto. Para eso está give_sudo.
groups: un parámetro exclusivamente local. Especifica grupos que se añadirán a common_groups en este host particular. No añadas sudo aquí. Para eso está give_sudo.
Ejemplo 1 (corto)
manage-users.yml
- hosts:
- all
become: yes
become_user: root
vars_files:
- vars/ssh_public_keys.yml
vars:
common_groups: [ users ]
roles:
- tags: [ admins, freehck ]
role: user-func
username: freehck
give_sudo: yes
authorized_keys: [ freehck ]
hosts:
- host: all
- tags: [ special, jenkins ]
role: user-func
username: jenkins
authorized_keys: [ jenkins, jenkins-slave01, jenkins-slave02 ]
hosts:
- host: all
- host: jenkins-slave01
groups: [ docker ]
- tags: [ testers, tester ]
role: user-func
username: tester
authorized_keys: [ tester ]
hosts:
- host: stand01
- host: stand02
- host: db01
vars/ssh_public_keys.yml
ssh_public_keys:
- name: freehck
fullname: Dmitrii Kashin
key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPSD4/7GDGnHuFr/p/ZmDoW0RZ/3bHvoI/s5WwOpARJuqgnzj2CyfiPxkKzvCuncUq8O8FfjnAyyj7pEIV2MSEQnxzoFDfcJHRH4sw68TLlGENUvQjtTqrZQ2fyZ6Nu7dktq4A3aOxV0rVZa2oJMA1V1LFj5y9u9B4Sj1pSuY0HkAF1XHJDyBQUs8ncrBkwakqCw0wKI7aLC6tph4whFzJqs8LSnwrR6kMMyVC2xjaw8vczM1wcYVfc6lPN7tWJTH3GrjQRdEYEJo3VqInoiQ9OKb171fMrp9N1u6a88ffTDdX3Jlgm8MRSItuGkdJ9tNXke/hq7GuKmavx7sMf34d freehck
- name: jenkins
key: ...
- name: jenkins-slave01
key: ...
- name: jenkins-slave02
key: ...
Ejemplo 2 (con todas las opciones posibles)
- role: user-func
username: freehck # requerido
give_sudo: no
password: "mysecret"
lock_password: no
disable_user: no
delete_user: no
shell: "/bin/bash"
common_groups: [ "users" ]
authorized_keys: [ key_name, ... ]
ssh_public_keys:
- name: freehck
fullname: Dmitrii Kashin
key: <public-key>
hosts: # requerido
- host: host-o-grupo-de-inventario # requerido
give_sudo: yes
password: "mysecret"
lock_password: no
disable_user: no
delete_user: no
shell: "/bin/zsh"
groups: [ "vboxusers" ]
authorized_keys: [ key_name, ... ]
- host: host-o-grupo-de-inventario
...
Licencia
GPLv3+
Información del Autor
Este rol fue escrito por Dmitrii Kashin, también conocido como freehck.
ansible-galaxy install freehck.user-func