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.