Cualquiera que haya configurado manualmente numerosos servidores sabe lo tedioso y propenso a errores que puede ser. La automatización simplifica estos procesos, y Ansible suele elegirse por su sencillez, flexibilidad y amplia compatibilidad con varios sistemas operativos. Sin embargo, a menudo surge la duda de cómo ejecutar Ansible directamente en Windows y usarlo correctamente para gestionar servidores remotos. A continuación se presenta una guía paso a paso para comenzar rápidamente con Ansible en Windows.
¿Por qué Ansible?
Antes de entrar en los detalles de la instalación, conviene entender brevemente por qué Ansible es tan popular. Está diseñado para simplificar la gestión de la configuración y el despliegue de aplicaciones. En lugar de ejecutar comandos manualmente en cada servidor, Ansible proporciona un punto de control central y emplea el concepto de playbooks declarativos, que permiten describir el estado deseado de la infraestructura en archivos YAML sencillos. Esto hace el proceso reproducible y reduce considerablemente el tiempo de despliegue.
En otras palabras, Ansible ofrece:
- Simplicidad de uso: se basa en YAML y los archivos de configuración son muy legibles.
- Capacidad de escalado: Ansible gestiona con igualdad de facilidad desde decenas hasta cientos de servidores.
- Requisitos mínimos en los nodos objetivo: basta con disponer de SSH (para Linux) o WinRM (para servidores Windows).
Ahora que se entiende el principio general de Ansible, podemos pasar a la descripción detallada del proceso de instalación en Windows.
Métodos para instalar Ansible en Windows
Ansible fue desarrollado y optimizado originalmente para sistemas tipo Unix. Windows no figura entre los sistemas oficialmente soportados para ejecutar Ansible en sí (aunque sí para gestionar servidores Windows como hosts remotos). No obstante, eso no significa que no se pueda usar en Windows. Los enfoques principales incluyen:
- Usar el Subsistema de Windows para Linux (WSL).
- Desplegarlo en una máquina virtual (Hyper-V, VirtualBox, etc.).
- Ejecutarlo en un contenedor Docker en Windows (requiere Docker Desktop).
La opción más sencilla en la mayoría de los casos es la instalación mediante WSL, ya que ofrece una integración ligera con Windows y a la vez proporciona un entorno Linux completo para trabajar con Ansible.
Preparar el entorno con WSL
El Subsistema de Windows para Linux es una capa de compatibilidad que permite ejecutar binarios de Linux en Windows sin virtualización tradicional. Para instalar Ansible será necesario instalar WSL y una de las distribuciones Linux soportadas (Ubuntu, Debian, etc.).
-
Habilitar el componente WSL:
- Abra PowerShell como administrador.
- Ejecute el comando:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux - Reinicie el equipo para aplicar los cambios.
-
Instalar una distribución Linux:
- Abra Microsoft Store y seleccione la distribución que prefiera (por ejemplo, Ubuntu).
- Instale y ejecute la aplicación; en el primer arranque se le pedirá crear una cuenta y una contraseña dentro de Linux.
-
Actualizar la distribución:
- En el terminal WSL ejecute:
sudo apt-get update && sudo apt-get upgrade -y
- En el terminal WSL ejecute:
Tras estos pasos dispondrá de un terminal Linux completo dentro de Windows. Ahora es el momento de instalar Ansible.
Instalar Ansible dentro de WSL
El distribuidor más común elegido para WSL es Ubuntu. A continuación se explica la instalación de Ansible en ese ejemplo. Si usa otra distribución, los comandos pueden variar, pero el principio es similar.
-
Instalar paquetes necesarios y añadir repositorios:
- En Ubuntu 20.04 y posteriores basta ejecutar en la consola:
sudo apt-get install ansible -y - En versiones más antiguas o distribuciones donde Ansible no esté en los repositorios base, puede ser necesario añadir un PPA. La instrucción está en la documentación oficial de Ansible.
- En Ubuntu 20.04 y posteriores basta ejecutar en la consola:
-
Comprobar la versión de Ansible:
- Tras la instalación ejecute:
ansible --version - Compruebe que se muestra información sobre la versión, así como sobre Python y las rutas a los archivos de configuración.
- Tras la instalación ejecute:
Si todo ha ido bien, Ansible ya está listo para usarse. El siguiente paso es configurar el inventario y aprender a gestionar servidores remotos.
Preparar el archivo de inventario
En Ansible la lista de hosts gestionados se almacena en el llamado "inventario". Puede ser un archivo sencillo en formato INI o YAML que indica el nombre de cada servidor remoto y los parámetros de conexión. Ejemplo de un inventario estático básico en formato INI:
[webservers] 192.168.0.101 192.168.0.102 [dbservers] db1.example.com db2.example.com
Para cada servidor puede indicar variables adicionales, incluido el nombre de usuario, el puerto SSH y la ruta a la clave privada. Si usa claves para autenticación, colóquelas en la ubicación estándar ~/.ssh o indique la ruta directamente en el inventario.
Ventajas del inventario estático:
- Facilidad de configuración para proyectos pequeños.
- Registro explícito de todos los hosts y grupos.
No obstante, en infraestructuras más grandes es habitual usar inventarios dinámicos, generados sobre la marcha por scripts o integrados con plataformas en la nube (por ejemplo, AWS, Azure, Google Cloud). Estos inventarios recopilan automáticamente la lista de nodos y sus parámetros.
Conceptos básicos sobre los playbooks
Una vez configurado el inventario, conviene entender cómo Ansible ejecuta las tareas en los servidores remotos. La unidad principal son los playbooks. Son archivos YAML que describen un conjunto de tareas para determinados grupos de hosts. Cada playbook contiene:
- La lista de hosts (o grupos) a los que va dirigido el play.
- La lista de tareas (tasks), ordenadas de arriba a abajo.
- Opcionalmente — variables, manejadores (handlers) y roles (roles).
Un playbook sencillo puede verse así:
- hosts: webservers
become: yes
tasks:
- name: Instalar Nginx
apt:
name: nginx
state: present
En este ejemplo se indican los hosts del grupo webservers, se activa el modo de elevación de privilegios (sudo) y a continuación se instala el paquete Nginx. Para ejecutar el playbook use:
ansible-playbook -i inventory.ini playbook.yml
Tener en cuenta las peculiaridades de máquinas Windows como hosts remotos
Ansible puede gestionar servidores Windows, pero el proceso difiere del acceso SSH a Linux. Para que Ansible interactúe con hosts Windows se utiliza el protocolo WinRM (Windows Remote Management). Los playbooks siguen siendo YAML; solo cambian los módulos por versiones específicas para Windows (por ejemplo, win_copy en lugar de copy, win_user en lugar de user, etc.).
Para configurar WinRM es necesario:
- Activar WinRM en los servidores Windows.
- Indicar el protocolo, puerto y credenciales en el inventario. Ejemplo:
[windows] server1 ansible_host=192.168.0.103 ansible_user=Admin ansible_password=secret ansible_port=5985 ansible_connection=winrm
- Si procede, configurar cifrado y HTTPS para una conexión segura.
Si solo va a gestionar servidores Linux, bastará con SSH estándar.
Consejos para organizar la estructura del proyecto
Una parte importante del trabajo con Ansible es mantener una estructura de directorios clara, ya que conforme crece la infraestructura aumentarán también los playbooks, roles y variables. Se recomienda la siguiente estructura:
ansible-project/
├── inventories/
│ ├── dev/
│ │ └── inventory.ini
│ └── prod/
│ └── inventory.ini
├── roles/
│ ├── role_name/
│ │ ├── tasks/
│ │ ├── templates/
│ │ ├── files/
│ │ └── vars/
├── group_vars/
├── host_vars/
└── playbooks/
├── site.yml
└── webservers.yml
Dicha estructura permite:
- Separar claramente los entornos (dev, staging, prod).
- Almacenar las variables de grupo (group_vars) y de hosts individuales (host_vars) por separado.
- Usar roles (roles) para reutilizar código.
Automatizar tareas rutinarias y ejemplos de módulos útiles
Ansible ofrece una amplia biblioteca de módulos para realizar diversas tareas. Por ejemplo:
- apt o yum — instalación de paquetes en sistemas basados en Debian/RedHat.
- service o systemd — gestión de servicios.
- copy — copia de archivos a servidores remotos.
- win_copy — módulo equivalente para Windows.
- git — clonación de repositorios Git.
- template — renderizado de archivos de configuración a partir de plantillas Jinja2.
Combinando estos módulos se pueden automatizar tareas como despliegue de aplicaciones, ajuste de parámetros del sistema, actualización programada de servidores y mucho más.
Problemas frecuentes y sus soluciones
Al usar Ansible en Windows mediante WSL puede encontrarse con varias dificultades típicas:
- El agente SSH no funciona: es necesario iniciar o reconfigurar el agente SSH en WSL para que las claves funcionen correctamente.
- Problemas con rutas: los sistemas de archivos de WSL y Windows representan las unidades de forma diferente. Asegúrese de que las rutas a archivos y claves correspondan a rutas de Linux.
- Restricciones de permisos: si intenta ejecutar comandos con elevación pero sin become: yes, algunas tareas pueden fallar.
- Diferencias de entornos: al mover un proyecto de Ansible entre Linux y Windows pueden surgir inconsistencias en rutas, enlaces simbólicos y formatos de fin de línea (CRLF vs. LF). Se recomienda ajustar la configuración de Git para evitar conversiones inesperadas del fin de línea.
Utilidades adicionales y enlaces
Además de la propia herramienta Ansible, existen servicios y herramientas de terceros que facilitan la vida a desarrolladores y administradores:
- Ansible Galaxy — repositorio de roles y colecciones para encontrar módulos listos para aplicaciones comunes.
- Ansible Collections — módulos y roles agrupados para distintas plataformas (AWS, VMware, Cisco, etc.).
- PyPI — si necesita instalar dependencias de Python adicionales, use pip directamente en el entorno WSL.
- GitHub — numerosos proyectos abiertos con playbooks listos que sirven como referencia de buenas prácticas.
Conclusión
Instalar Ansible en Windows mediante WSL es una solución cómoda y flexible para automatizar la infraestructura. Un usuario de Windows puede gestionar tanto servidores Linux como Windows con el mismo conjunto de herramientas. Independientemente del tamaño del proyecto y del número de nodos, Ansible reduce tareas repetitivas, facilita el despliegue y estandariza configuraciones.
Siga un enfoque estructurado: use un inventario claro, organice los playbooks por roles, no descuide los registros y planifique la escalabilidad desde el principio. Un Ansible bien configurado puede convertirse en el elemento central de su cultura DevOps, permitiéndole dedicar menos tiempo a tareas repetitivas y más al desarrollo y la optimización.