Guía Paso a Paso: Configurar Ubuntu 24.04 con Ansible para Ejecutar Playbooks en un Windows Server 2025 Usando Pares de Claves SSH

Ansible es una herramienta poderosa para la automatización, y configurar un servidor Ubuntu para gestionar un servidor Windows mediante pares de claves SSH es una tarea que requiere cuidado. En esta guía, aprenderás cómo hacerlo desde cero, incluyendo la instalación de Ansible y todas las configuraciones necesarias. Al final, podrás ejecutar un ping exitoso con Ansible desde Ubuntu al servidor Windows.


Paso 1: Preparar Windows Server 2025 para configurar el servicio SSH

Para habilitar la autenticación SSH en el servidor Windows, necesitarás un servicio SSH activo. Windows Server 2025 incluye OpenSSH como característica opcional.

En una consola de powershell ejecuta el siguiente comando para que el servicio de SSH se inicie en cada inicio del servidor:

set-service -name sshd -StartupType Automatic

A continuación, crea una regla de Firewall para habilitar conexiones entrantes:

New-NetFirewallRule -DisplayName 'Permitir SSH' -Name 'Permitir SSH' -Profile Any -LocalPort 22 -Protocol TCP

Ahora debemos configurar la shell por defecto en windows cuando nos conectemos por SSH, os dejo dos opciones para powershell normal:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name ShellPorDefecto -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

O mi preferencia, para powershell 7 (debéis instalarlo primero)

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name ShellPorDefecto -Value "C:\Program Files\PowerShell\7\pwsh.exee" -PropertyType String -Force

Ahora a levantar el servicio de SSH:

start-service -name sshd

Paso 2: Configurar Ubuntu y Preparar el Entorno

Instalar Ansible

Primero, asegúrate de que tu Ubuntu 24.04 esté actualizado:

sudo apt update && sudo apt dist-upgrade -y

Instala los paquetes requeridos para añadir el repositorio de Ansible:

sudo apt install -y software-properties-common

Añade el repositorio oficial de Ansible e instálalo:

sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible vim iputils-ping sshpass -y

Verifica la instalación de Ansible:

ansible --version

Resultado esperado: Verás información sobre la versión instalada, confirmando que Ansible está listo para usar.
Toca comprobar que podemos conectarnos por SSH a nuestro servidor windows ejecutando:

ssh [usuario Windows]@[IP o nombre del servidor]
Ejemplo: ssh administrator@10.10.100.166

Paso 3: Configurar Ansible

Crear el Archivo de Inventario

Crea un archivo de inventario llamado inventory.ini:

sudo vim ~/hosts_inicial.ini

Contenido del archivo:

[windows]
server2025 ansible_host=10.10.100.166 #Pon aquí tu listado de servidores

[all:vars]
ansible_connection = ssh
ansible_shell_type = powershell
ansible_ssh_common_args='-o StrictHostKeyChecking=no'

Paso 4: Probar la Conexión

Ejecuta el comando para probar la conexión con Ansible:

ansible all -i hosts_inicial.ini -m ansible.windows.win_ping -u Administrator --ask-pass

Resultado esperado: Deberías ver una salida indicando un SUCCESS y un mensaje "pong" del servidor Windows, lo que confirma que la configuración es exitosa.


Paso 5: Configurar Pares de Claves SSH

Crear Pares de Claves en Ubuntu

Genera un par de claves SSH en tu máquina Ubuntu:

ssh-keygen -b 4096

Durante la generación, puedes presionar Enter para aceptar las rutas y configuraciones predeterminadas. Esto crea dos archivos en ~/.ssh/:

  • id_ed25519 (clave privada)
  • id_ed25519.pub (clave pública)

Transferir la Clave Pública al Servidor Windows

Crear el archivo C:\ProgramData\ssh\administrators_authorized_keys y copia en el el contenido de la clave pública generada.

cat ~/.ssh/id_ed25519

Resultado esperado: Podrás conectarte al servidor Windows desde Ubuntu usando SSH sin contraseña:

ssh ansible_user@[IP o nombre de tu servidor Windows]
Ejemplo: ssh ansible_user@10.10.100.166

Ahora usamos el agente de ssh para que abra un proceso en el backgroun y guarde nuestra clave privada en caché, ejecutando:

ssh-agent bash
ssh-add ~/.ssh/id_ed25519

Paso 6: Comprobar que podemos conectar via SSH con Ansible usando pares de claves SSH

Copiamos el archvo de inventario con: Para ello ejecutamos el comando:

cp ~/hosts_initial.ini ~/hosts.ini

Lo editamos con vim:

vim ~/hosts.ini

Y lo dejamos de la siguiente forma:

[windows]
10.10.100.166 #Pon aquí tu listado de servidores

[all:vars]
ansible_connection = ssh
ansible_shell_type = powershell
ansible_user = Administrator

Y ya solo nos queda comprobar que podemos utilizar Ansible con los pares de claves SSH:

ansible all -i hosts.ini -m ansible.windows.win_ping

Conclusión

Siguiendo esta guía, has configurado un servidor Ubuntu 24.04 con Ansible para gestionar un servidor Windows Server 2025 usando pares de claves SSH. Este método es más seguro y práctico que usar contraseñas. Ahora estás listo para ejecutar tareas automatizadas en el servidor Windows desde tu máquina Ubuntu. 🎉

Resumen de Archivos

  1. Clave SSH pública: ~/.ssh/id_ed25519.pub
  2. Clave SSH privada: ~/.ssh/iid_ed25519
  3. Archivo de inventario: ~/hosts.ini
  4. Archivo de Claves Autorizadas: C:\ProgramData\ssh\administrators_authorized_keys

¡Disfruta automatizando! 🚀

Vídeo completo

error: ooops!