Ansible Ubuntu · 8 min read · Dec 19, 2025
Cómo instalar y configurar Ansible en Ubuntu 20.04

Ansible es una herramienta de gestión de configuración muy popular diseñada para agilizar el proceso de control de un gran número de servidores. Puedes controlar tantos servidores y ejecutar procesos en ellos simultáneamente desde un solo nodo.
Ansible no requiere ningún software especial que deba ser instalado en los nodos del servidor y puede controlarlos a través de SSH.
En esta guía, aprenderemos cómo instalar y configurar Ansible en un servidor Ubuntu 20.04.
Requisitos previos
- Dos o más sistemas de servidor basados en Ubuntu 20.04 con el servidor OpenSSH instalado.
- Tanto el servidor como los nodos son accesibles a través de direcciones IP públicas.
- Un usuario no root con privilegios sudo configurado en el servidor Ansible y un usuario root con una contraseña configurada en los clientes Ansible.
Instalar Ansible
El repositorio oficial de Ansible no soporta Ubuntu 20.04 debido a un error en la biblioteca de python de Ubuntu en el momento de escribir este tutorial.
Afortunadamente, Ubuntu incluye Ansible 2.9, que es lo que instalaremos. Ejecuta el siguiente comando para instalar Ansible.
$ sudo apt install ansible -y
Prueba tu instalación ejecutando el siguiente comando.
$ ansible --version
ansible 2.9.6
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/username/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
Configurando el archivo de inventario
Para poder conectarte a múltiples hosts, necesitas un archivo que registre los detalles de los nodos. Este archivo se llama archivo de inventario.
Dependiendo de cuántos servidores quieras controlar, el archivo de inventario de Ansible también te permite organizarlos en grupos y subgrupos. También puedes establecer variables personalizadas aplicables a hosts o grupos seleccionados que se pueden utilizar posteriormente al pasar las instrucciones.
Ansible incluye un archivo de inventario predeterminado disponible en /etc/ansible/hosts. Ábrelo con el editor Nano.
$ sudo nano /etc/ansible/hosts
Pega el siguiente código al final del archivo.
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113
[all:vars]
ansible_python_interpreter=/usr/bin/python3
La sección servers define la lista de nodos a los que deseas conectarte. Puedes crear tantos grupos como desees para organizar los servidores en múltiples grupos.
El grupo all:vars establece el parámetro ansible_python_interpreter en todos los hosts del inventario. Asegura que Ansible use el ejecutable de Python 3 en lugar de Python 2, que ha sido eliminado de las versiones recientes de Ubuntu.
Cuando termines, guarda y cierra el archivo presionando CTRL+X, luego Y y ENTER para confirmar tus cambios.
Nota: También puedes crear tu propio archivo de inventario en cualquier ubicación de tu elección, que luego puedes pasar utilizando el parámetro -i al ejecutar comandos de Ansible.
Puedes verificar tu lista de inventario con el siguiente comando.
$ ansible-inventory --list -y
all:
children:
servers:
hosts:
server1:
ansible_host: 203.0.113.111
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: 203.0.113.112
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: 203.0.113.113
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}
Organizando servidores en grupos y subgrupos
Este es un consejo útil si tienes muchos servidores con algunos servidores realizando funciones específicas. Por ejemplo, puedes usar este método para agrupar servidores web y servidores de bases de datos por separado. Incluso puedes hacer que un host sea parte de múltiples grupos. Para lograr eso, tu archivo de inventario debería verse algo así:
[webservers]
203.0.113.111
203.0.113.112
[dbservers]
203.0.113.113
server_hostname
[development]
203.0.113.111
203.0.113.113
[production]
203.0.113.112
server_hostname
Configurar claves SSH
Para que Ansible pueda conectarse a los servidores, debes configurar claves SSH entre tu servidor Ansible y los hosts especificados en el archivo de inventario. Esto solo funcionará si los clientes de Ansible no tienen habilitada una clave pública y tienen una cuenta root habilitada con una contraseña.
Usa los siguientes pasos para crear y configurar una clave SSH para Ansible y sus nodos.
Crea la clave para Ansible.
$ ssh-keygen -t rsa -b 4096 -C "Ansible key"
Copia la clave pública a tus cuentas en los servidores remotos. Para esto, utilizaremos el comando ssh-copy-id.
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
Eso es todo. Ahora Ansible debería poder comunicarse con tus servidores.
Configurar claves SSH en nodos con clave pública existente
Si los clientes ya tienen claves públicas habilitadas, entonces tendrás que seguir ciertos pasos adicionales. Para eso, necesitas crear un nuevo usuario accesible solo por Ansible en cada servidor nodo. Ese usuario tendrá privilegios sudo accesibles sin contraseña y solo podrá ser accedido desde tu servidor Ansible.
Para crear un usuario ansible, ejecuta el siguiente comando.
$ sudo adduser ansible
Elige una contraseña fuerte y deja todos los demás campos vacíos.
Ahora, configura el acceso sudo sin contraseña para este usuario a través del siguiente comando.
$ echo "ansible ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ansible
Ahora que has añadido y configurado el nuevo usuario, puedes copiar la clave SSH desde tu servidor Ansible al servidor nodo utilizando el siguiente comando.
$ ssh-copy-id [email protected]
Se te pedirá una contraseña para el usuario ansible. Ingresa la contraseña y la clave SSH será copiada.
A continuación, desactiva el inicio de sesión basado en contraseña para el usuario ansible en el servidor nodo.
$ sudo usermod -L ansible
Ahora, tu servidor nodo solo es accesible desde el servidor Ansible, ya que solo ese servidor tiene la clave pública para él y no puedes usarlo con privilegios sudo en el servidor nodo directamente, ya que el inicio de sesión por contraseña está deshabilitado.
Tendrás que repetir estos pasos para cada servidor nodo. Además, reemplaza el usuario root con el usuario ansible en este tutorial.
Probar conexión
Después de configurar el archivo de inventario y las claves SSH, debemos verificar si Ansible puede conectarse a los servidores.
Escribe el siguiente comando para verificar la conexión. Este comando probará la conexión a todos los servidores del archivo de inventario.
$ ansible all -m ping -u root
Este comando utiliza el módulo ping de Ansible para ejecutar una prueba de conectividad en todos los servidores. Deberías obtener una salida como la siguiente.
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Si esta es la primera vez que usas Ansible, se te pedirá que confirmes la autenticidad de todos los servidores. Cuando se te pida, escribe yes y presiona ENTER para confirmar.
Ejecutar algunos comandos básicos
Vamos a ejecutar algunos comandos básicos en los servidores utilizando Ansible. Para ejecutar cualquier comando en el servidor, se utiliza el siguiente formato.
$ ansible all -a "command" -u
Comprobar uso de disco
Primero, comprobemos el uso de disco en todos nuestros servidores.
$ ansible all -a "df -h" -u root
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 798M 624K 798M 1% /run
/dev/vda1 155G 2.3G 153G 2% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 608K 394M 1% /run
/dev/vda1 78G 2.2G 76G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 395M 0 395M 0% /run/user/0
Dirigir a hosts y grupos individuales
Hasta ahora, hemos estado ejecutando comandos en todos los servidores remotos a la vez. Pero eso no siempre es el caso. Para ejecutar un comando en solo un servidor, debes usar el siguiente formato.
$ ansible server1 -a "uptime" -u root
server1 | CHANGED | rc=0 >>
21:38:26 up 11 min, 2 users, load average: 0.00, 0.20, 0.19
El comando anterior verifica el tiempo de actividad en server1 desde el grupo de inventario.
También puedes dirigirte a múltiples servidores utilizando el siguiente formato.
$ ansible server1:server2 -m ping -u root
También puedes dirigirte a grupos o subgrupos directamente desde el archivo de inventario.
$ ansible groupname -m ping -u
Actualizar todos los servidores
Para este tutorial, asumimos que todos los servidores remotos están ejecutando Debian o Ubuntu OS.
Ejecuta el siguiente comando para actualizar el software en todos tus servidores.
$ ansible all -m apt -a "update_cache=yes upgrade=yes" -u root
El parámetro -m define el módulo que Ansible debe ejecutar. -a se refiere a los argumentos o comandos para el módulo asociado. Aquí, estamos utilizando el módulo apt de Ansible para actualizar servidores, al igual que usamos el módulo ping en nuestro último ejemplo. update_cache actualiza la caché de APT en el servidor y upgrade=yes le dice a Ansible que ejecute el comando apt upgrade.
Para actualizar tus servidores CentOS, puedes usar el mismo comando reemplazando apt con yum y para servidores Fedora, puedes reemplazar apt por dnf.
Si estás utilizando el usuario ansible como se documentó anteriormente, necesitas modificar el comando ansible para ejecutarlo con privilegios sudo elevados.
$ ansible server2 -m apt -a "update_cache=yes upgrade=yes" -K -b -u ansible
Aquí, -K solicita la contraseña de escalado de privilegios. -b ejecuta la operación ansible con become, lo que te permite ser otro usuario. Ambas variables combinadas permiten que ansible se ejecute con privilegios sudo elevados. Necesitarás usar esto para todos los comandos que requieran privilegios sudo.
A veces, algunos de estos comandos de actualización pueden requerir un reinicio, así que ejecuta el siguiente comando para reiniciar todos tus servidores.
$ ansible all -a "reboot" -u root
Estos fueron solo algunos de los comandos básicos que puedes ejecutar utilizando Ansible.
Conclusión
Eso concluye nuestro tutorial sobre la instalación y configuración de Ansible en un servidor basado en Ubuntu 20.04. Si tienes alguna pregunta, publícalas en los comentarios a continuación.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.