Mi Blog
Cómo conectar equipos Windows con Ansible

Cómo conectar equipos Windows con Ansible

 
(3 votos)

Ansible es capaz de conectar y automatizar tareas no solamente con equipos GNU/Linux, sino también con equipos Windows. En este tutorial aprenderemos a crear a modo de ejemplo un usuario de forma automática con Ansible en un equipo remoto Windows 7 para comprobar que Ansible funciona a la perfección.

Seguid leyendo y os enseñaré a configurar Windows para poder conectarlo a Ansible...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

¿QUÉ ES ANSIBLE?

Ansible es una plataforma de software libre para configurar y administrar ordenadores. Combina instalación multi-nodo (es decir: permite desplegar configuraciones de servidores y servicios por lotes), ejecuciones de tareas ad hoc y administración de configuraciones. Adicionalmente, Ansible es categorizado como una herramienta de orquestación. Gestiona nodos a través de SSH y no requiere ningún software remoto adicional (excepto Python 2.4 o posterior​ para instalarlo). Dispone de módulos que trabajan sobre JSON y la salida estándar puede ser escrita en cualquier lenguaje. Nativamente, utiliza YAML para describir configuraciones reusables de los sistemas.

Ventajas:

  • No necesita instalar agentes
  • Solo se necesita tener instalado Python en los equipos administrados
  • Gran biblioteca pública de módulos para aumentar su funcionalidad

 

Web: https://www.ansible.com/

 

 

Ansible es una herramienta típica de DevOPS para automatizar tareas y configuraciones

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un PC con GNU/Linux Debian (o similar) y Ansible instalado
  • Un PC con Windows 7 o superior

 

 

2.- CONFIGURAR LOS EQUIPOS WINDOWS

Para que Ansible funciona correctamente, se deben de cumplir una serie de requisitos previos en los equipos con Windows.

PowerShell v3.0 ó superior

Para comprobar la versión de PowerShell que tenemos instalada, abriremos una terminal de PowerShell y ejecutaremos el siguiente comando:

(Get-Host).version

 

 

Conectar Windows AnsibleVersión de Powershell

 

 

.NET 4.0 ó superior

Para comprobar la versión del .NET que tenemos instalada (puede haber varias versiones), abriremos una consola de PowerShell y ejecutaremos el siguiente comando:

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name version -EA 0 | Where { $_.PSChildName -Match '^(?!S)\p{L}'} | Select PSChildName, version

Conectar Windows AnsibleVersión de .NET

 

 

WinRM instalado y escuchando

El servicio de Windows Remote Management (WinRM) deberá estar arrancado para que la comunicación entre Ansible y los equipos Windows funcione correctamente. Para arrancarlo, iremos a Servicios y lo arrancaremos con botón derecho "Arrancar/Start":

Conectar Windows AnsibleServicio WinRM arrancado

 

 

Debemos tener configurado correctamente WinRM para que acepte peticiones. Para ello, desde una terminal de Administrador, ejecutaremos el siguiente comando y aceptaremos todas las preguntas que nos haga el asistente:

winrm quickconfig

 

 

En la siguiente imagen se pueden ver las preguntas que nos hace el asistente:

Conectar Windows AnsibleConfigurar WinRM

 

 

3.- CONFIGURAR ANSIBLE

Partiremos de la base que tenemos instalado Ansible en nuestro equipo. Una vez instalado, deberemos instalar también python3-pip para poder instalar paquetes de python. Para ello ejecutaremos el comando siguiente:

raul@debian:~$ sudo apt-get install python3-pip

 

 

Una vez instalado PIP, instalaremos pywinrm para poder comunicar Ansible y equipos windows a través de Windows Remote Management. Ejecutaremos el siguiente comando:

raul@debian:~$ sudo pip3 install pywinrm

 

 

Aunque existen diferentes formas de configurar y ordenar los hosts manejados por Ansible, vamos a realizar la configuración más básica para manejar un equipo cliente con Windows 7. Para ello, editaremos el fichero /etc/ansible/hosts y añadiremos las siguientes líneas, donde deberemos cambiar la IP del equipo Windows y el usuario y la contraseña. Se recomienda usar otro usuario administrador diferente al "Administrador" por defecto. El resto de parámetros los dejaremos igual:

[win]
192.168.1.78

[win:vars]
ansible_ssh_user = ansible
ansible_ssh_pass = ansible
ansible_ssh_port = 5985
ansible_connection = winrm
ansible_winrm_transport = basic
ansible_winrm_server_cert_validation = ignore

 

 

La configuración de Ansible es tan sencilla como la configuración arriba indicada. Creamos un grupo de hosts llamado "win" y se le asignan una seria de variables a dicho grupo con "win:vars". Lógicamente, el nombre del grupo puede ser otro.

 

 

4.- PROBAR LA CONEXIÓN ENTRE ANSIBLE Y WINDOWS

Para comprobar si la conectividad y la configuración entre Ansible y el equipo con Windows es correcta, ejecutaremos el siguiente comando que debe mostrar un mensaje de éxito en color verde:

raul@debian:~$ ansible win -m win_ping

 

 

Deberemos obtener un mensaje de conexión exitosa con una respuesta SUCCESS como en la siguiente imagen:

Conectar Windows AnsibleConexión WinRM satisfactoria

 

 

Si obtenemos el siguiente error "basic: the specified credentials were rejected by the server", aplicar los cambios del paso 6 y probar de nuevo.

 

 

5.- CREAR UN USUARIO REMOTO CON ANSIBLE

Para comprobar que efectivamente podemos automatizar tareas en los equipos Windows gestionados con Ansible, vamos a crear un pequeño Playbook (script) para Ansible el cual creará un usuario local en el equipo remoto Windows 7. Crearemos el siguiente fichero /etc/ansible/win-create-user.yml:

---
- name: "Create user on Windows Machine"
hosts: win
tasks:
- name: "Check Windows machines access using win_ping"
win_ping:

- name: Create new user
win_user:
name: raul
password: raul
state: present
groups:
- Users

 

 

El equipo Windows remoto tiene solamente los siguientes usuarios creados: 

Conectar Windows AnsibleUsuarios Windows

 

 

Ahora, para ejecutar el Playbook ejecutaremos el siguiente comando:

raul@debian:~$ ansible-playbook win-create-user.yml

 

 

El Playbook comenzará a ejecutarse y en cada paso nos irá mostrando la salida:

Conectar Windows AnsibleEjecución del Playbook

 

 

Si refrescamos la lista de usuarios del equipo remoto, veremos que efectivamente el usuario ha sido creado satisfactoriamente:

Conectar Windows AnsibleUsuario creado desde Ansible

 

 

6.- SOLUCIÓN A PROBLEMAS DE CONEXIÓN CON WINRM

Si a la hora de realizar la prueba de conexión obtenemos un mensaje como "basic: the specified credentials were rejected by the server", abriremos una consola de PowerShell en modo Administrador y ejecutaremos los siguientes dos comandos: 

Set-Item -Force WSMan:\localhost\Service\auth\Basic $true
winrm set winrm/config/service '@{AllowUnencrypted="true"}'

 

 

Una vez ejecutados, volveremos a probar la conexión debería realizarse de forma correcta:

Conectar Windows AnsibleProblema de conexión 

 

 

ENJOY!


Acerca de Mi

RPF

Soy Ingeniero Téc. Industrial Mecánico, Administrador de Sistemas Informáticos, Desarrollador de Aplicaciones Informaticas Web, Técnico Superior en PRL, Experto en Energías Renovables... y trabajo actualmente como Senior DevOPS en HP SCDS.

Contactar conmigo

Dirección: León, España

E-Mail: Contactar

Web: https://www.raulprietofernandez.net

Skype: raul.lnx

APÚNTATE GRATIS

VIP RPF
Entra en la Comunidad VIP y consigue acceso a las descargas en PDF, Trucos y Videotutoriales ocultos y mucho más... ¡Muy Pronto!

Si haces login, serás automáticamente suscrito a mi lista de Newsletter. Siempre podrás borrarte cuando quieras.