Cómo añadir usuario y contraseña con Ansible
08:29, 28.05.2024
A los usuarios se les ofrecen montones de herramientas y funciones para fines de automatización y eso simplifica enormemente todos los retos que pueden estar relacionados con la gestión. Aquí, le presentaremos una gran herramienta que se llama Ansible. Es una opción fantástica para añadir nuevos usuarios y contraseñas. Si usted tiene un par de servidores, entonces el proceso manual de añadir nuevos usuarios puede ser realmente desperdiciador de tiempo. Ahora, no necesita perder el tiempo e introducir todos los usuarios, puede automatizar este proceso.
Basándonos en nuestra experiencia práctica con la explotación de la herramienta, compartiremos un par de ideas sobre Ansible.
Preparación del entorno
La preparación del entorno es un paso crucial en cualquier proceso, por eso procure comprobar que dispone de todo lo necesario:
- Archivo de inventario con hosts
- Ansible está instalado en el nodo controlador
- Se dispone de conexión SSH entre los nodos cliente y controlador
- Nodo cliente como remoto
El módulo de usuario
Este tipo de módulo en Ansible es esencial para los procesos de gestión de usuarios en los hosts. Aquí hay un par de opciones que son proporcionadas por un modo de usuario:
- State - determina el estado necesario de la cuenta
- Home - especifica el directorio de inicio
- Shell - shell de inicio de sesión
- Contraseña - la contraseña del usuario
- Groups - grupos suplementarios
- Ssh_key_file - lugar donde se almacena la clave SSH
- Ssh_key_bits - especificación del número de bits de la clave
- Name - y no nos olvidemos del nombre de usuario requerido
Por supuesto, estas son sólo las opciones básicas, pero la variedad es enorme y varias adicionales para este módulo son:
- Profile - especificación del perfil
- Seuser - esta opción añade el contexto de seguridad
- Update_password - este criterio es necesario para la actualización
Proceso de creación de usuarios
Si hablamos específicamente del proceso de creación de usuarios, existen técnicamente 2 opciones. Por lo tanto, vamos a discutir cada variante en detalle.
Inserción de usuarios mediante comandos ad hoc
La primera opción para la creación de usuarios se refiere a los comandos Ad-Hoc. Vamos a sumergirnos en una muestra real del proceso de creación de usuarios:
$ ansible -i project_inventory.ini client1 -m user -a "name=Action state=present createhome=yes" -b
192.168.221.171 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": true,
"comment": "",
"create_home": true,
"group": 1006,
"home": "/home/action",
"name": "Action",
"shell": "/bin/sh",
"state": "present",
"system": false,
"uid": 1005
}
Para comprobar si el usuario fue creado con todos los detalles mencionados, utilice el siguiente comando:
$ ls /home
Inserción de usuarios a través de Playbooks
El proceso de creación de usuarios a través de playbooks comienza con:
$ cat add_user.yml
---
- name: Create a user
hosts: client1
become: yes
tasks:
- name: Add user Action
user:
name: Action
shell: /bin/bash
home: /home/action
Después ejecute este playbook. Para comprobar si el proceso se ha realizado correctamente, como en el ejemplo anterior, cambie al nodo cliente y utilice el mismo comando:
$ ls /home/
Establecimiento de la pertenencia a un grupo
Ahora procederemos al establecimiento de la pertenencia al grupo para el usuario ya creado, el proceso es el siguiente:
$ cat add_grp.yml
---
- name: Create a group and add a user
hosts: client1
become: yes
tasks:
- name: Ensure the group exists
group:
name: group1
state: present
- name: Add user to the group
user:
name: action
groups: group1
append: yes
Después ejecute este playbook. Para comprobar si el proceso se ha completado con éxito utilice el siguiente comando:
$ groups group1
Integración de contraseñas
Aquí compartiremos un par de métodos para integrar una contraseña de forma adecuada.
Generación de contraseñas con mkpasswd
Las contraseñas cifradas se pueden crear con varios métodos, pero mkpasswd se considera el más frecuente. Esta utilidad está en el paquete whois, así que vamos a empezar con una instalación:
$ sudo apt install whois
Inserción de contraseñas mediante comandos ad hoc
Mkpasswd puede utilizarse junto con Ad-Hoc de esta forma:
$ ansible -i project_inventory.ini client1 -m user -a "name=Action password=$(mkpasswd --method=sha-512 '123')" --become
192.168.221.171 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"append": false,
"changed": true,
"comment": "",
"group": 1006,
"home": "/home/action",
"move_home": false,
"name": "Action",
"password": "NOT_LOGGING_PASSWORD",
"shell": "/bin/sh",
"state": "present",
"uid": 1005
}
Para la verificación de la contraseña, intente acceder con la nueva al usuario.
Inserción de contraseñas mediante libros de jugadas
Para la inserción a través de playbook, utilice la siguiente línea:
mkpasswd --method=sha-512
Contraseña:
$6$r6pnvoHc$gpG9kpqIbQfGL2o/NsTD/uN04OsZ15zAydVFPYkflnbSWCTTUBn9yC6IJb7MoRvzQqmadKuf.GEYv8ldQrlZO1
Después de eso, puede insertar la contraseña en el libro de jugadas y ejecutarlo. A continuación, puede intentar entrar con la contraseña creada.
Configuración del acceso remoto
Con la ayuda de Ansible, también podemos utilizar el acceso sin contraseña. Para este acceso remoto empezar con la creación del libro de jugadas:
$ cat user_ssh.yml
---
- name: Create user, SSH directory, and transfer SSH keys
hosts: client1
become: yes # Use become to run tasks as a privileged user
tasks:
- name: Create SSH directory for action
file:
path: /home/action/.ssh
state: directory
owner: action
group: action
mode: 0700
- name: Generate SSH key for action
user:
name: action
generate_ssh_key: yes
ssh_key_type: rsa
ssh_key_bits: 4096
ssh_key_file: /home/action/.ssh/id_rsa # Full path is needed here
- name: Transfer public key to the target host
authorized_key:
user: action
key: "lookup('file', '/home/vagrant/.ssh/id_rsa.pub')"
Para finalizar
En este artículo, compartimos los ejemplos comunes de uso de Ansible comenzando con la creación de un usuario y terminando con el uso sin contraseña. Esperamos que esta información le haya sido útil.