Cómo añadir usuario y contraseña con Ansible

Cómo añadir usuario y contraseña con Ansible

08:29, 28.05.2024

Contenido del artículo
arrow

  • Preparación del entorno
  • El módulo de usuario
  • Proceso de creación de usuarios
  • Inserción de usuarios mediante comandos ad hoc
  • Inserción de usuarios a través de Playbooks
  • Establecimiento de la pertenencia a un grupo
  • Integración de contraseñas
  • Generación de contraseñas con mkpasswd
  • Inserción de contraseñas mediante comandos ad hoc
  • Inserción de contraseñas mediante libros de jugadas
  • Configuración del acceso remoto
  • Para finalizar

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.

views 5m, 36s
views 2
Compartir

¿Te ha resultado útil este artículo?

Ofertas populares de VPS

Otros artículos sobre este tema

cookie

¿Acepta las cookies y la política de privacidad?

Utilizamos cookies para asegurar que damos la mejor experiencia en nuestro sitio web. Si continúa sin cambiar la configuración, asumiremos que acepta recibir todas las cookies del sitio web HostZealot.