IT Blog

ansible ubuntu server
Configuracion Documentacion servidores tutoriales

Actualizar servidores Ubuntu con Ansible Vault

A continuación, te presentamos un tutorial paso a paso para actualizar servidores en Ubuntu Server con Ansible utilizando Ansible Vault para almacenar las credenciales de forma segura.

Requisitos previos

Antes de comenzar, asegúrate de tener los siguientes requisitos previos:

  • Ansible instalado en la máquina desde la que ejecutarás el playbook.
  • Acceso SSH a los servidores que quieres actualizar.
  • Conocimientos básicos de YAML y Ansible.

Paso 1: Crear el archivo credentials.yml

El primer paso es crear el archivo credentials.yml con las credenciales necesarias para conectarse a los servidores. Este archivo debe estar en formato YAML y contener las siguientes variables:

  • ansible_user: el nombre de usuario con el que nos conectaremos al servidor.
  • ansible_ssh_private_key_file: la ruta al archivo de clave privada para conectarse al servidor.

Puedes crear el archivo credentials.yml utilizando tu editor de texto favorito. Por ejemplo, puedes crear el archivo en la ruta /home/tu_usuario/ansible/credentials.yml.

ansible_user: mi_usuario
ansible_ssh_private_key_file: /ruta/a/mi/clave_privada

Reemplaza mi_usuario y /ruta/a/mi/clave_privada con los valores correspondientes para tu caso.

Paso 2: Encriptar el archivo credentials.yml con Ansible Vault

Para proteger las credenciales, utilizaremos Ansible Vault para encriptar el archivo credentials.yml. Para ello, ejecuta el siguiente comando en la terminal:

ansible-vault encrypt /home/tu_usuario/ansible/credentials.yml

Se te pedirá que ingreses una contraseña para encriptar el archivo. Ingresa una contraseña segura y guárdala en un lugar seguro. Una vez que el archivo se ha encriptado, ya no se puede leer sin proporcionar la contraseña correcta.

Paso 3: Agregar el archivo encriptado al repositorio de Ansible

El siguiente paso es agregar el archivo encriptado al repositorio de Ansible para que pueda ser utilizado en el playbook. Puedes hacerlo simplemente copiando el archivo encriptado a la ruta correspondiente dentro del repositorio de Ansible. Por ejemplo, si tu repositorio de Ansible se encuentra en /home/tu_usuario/ansible, puedes copiar el archivo encriptado a la ruta /home/tu_usuario/ansible/vars/credentials.yml.

Paso 4: Actualizar el archivo hosts.ini con las credenciales encriptadas

El siguiente paso es actualizar el archivo hosts.ini para que especifique la ruta al archivo encriptado en lugar de las credenciales directamente. Abre el archivo hosts.ini y actualiza las secciones correspondientes con la siguiente información:

[web_servers]
server1.example.com ansible_host=192.168.2.1 ansible_connection=ssh ansible_ssh_common_args='-o StrictHostKeyChecking=no' ansible_become=True ansible_become_method=sudo vars_files=vars/credentials.yml
server2.example.com ansible_host=192.168.2.2 ansible_connection=ssh ansible_ssh_common_args='-o StrictHostKeyChecking=no' ansible_become=True ansible_become_method=sudo vars_files=vars/credentials.yml
server3.example.com ansible_host=192.168.2.3 ansible_connection=ssh ansible_ssh_common_args='-o StrictHostKeyChecking=no' ansible_become=True ansible_become_method=sudo vars_files=vars/credentials.yml
server4.example.com ansible_host=192.168.2.4 ansible_connection=ssh ansible_ssh_common_args='-o StrictHostKeyChecking=no' ansible_become=True ansible_become_method=sudo vars_files=vars/credentials.yml
server5.example.com ansible_host=192.168.2.5 ansible_connection=ssh ansible_ssh_common_args='-o StrictHostKeyChecking=no' ansible_become=True ansible_become_method=sudo vars_files=vars/credentials.yml

Agregamos vars_files=vars/credentials.yml al final de cada línea correspondiente a un servidor para especificar que las credenciales se leerán desde el archivo encriptado que colocamos en el directorio vars del repositorio.

Paso 5: Crear el playbook para actualizar los servidores

El siguiente paso es crear el playbook que actualizará los servidores. En este caso, crearemos un playbook sencillo que actualizará los paquetes del sistema en cada servidor.

Crea un archivo llamado update.yml en el directorio playbooks de tu repositorio de Ansible. Agrega lo siguiente al archivo:

---
- hosts: web_servers
 tasks:
  - name: Update system packages
    become: true
    apt:
      update_cache: yes
      upgrade: yes

Este playbook especifica que se actualizarán los paquetes del sistema en todos los servidores especificados en el archivo hosts.ini.

Paso 6: Ejecutar el playbook

Finalmente, podemos ejecutar el playbook para actualizar los servidores. Para ello, utiliza el siguiente comando en la terminal:

ansible-playbook playbooks/update.yml --ask-vault-pass

El parámetro --ask-vault-pass solicitará la contraseña que ingresaste al encriptar el archivo credentials.yml. Ingresa la contraseña y presiona Enter para ejecutar el playbook.

El playbook se ejecutará en todos los servidores especificados en el archivo hosts.ini. Ansible se conectará a cada servidor utilizando las credenciales especificadas en el archivo encriptado credentials.yml.

De esta manera sabras cómo actualizar servidores en Ubuntu Server con Ansible utilizando Ansible Vault para almacenar las credenciales de forma segura.

Para cualquier consulta o sugerencia no duden en contactarnos.