Preparación de hosts Windows (basic unencrypted auth)
Para que Ansible pueda entenderse con los hosts con sistema operativo Windows, estos deben estar preparados para ello. Esto lo hace atacando a WinRM (Windows Remote Management) que es una herramienta que trae Windows (que por defecto está desactivada) para que pueda ser administrado de manera remota (en especial, permite la ejecución de comandos). En caso de tener que preparar varios, una idea es preparar uno y realizar una imagen que replicar en el resto.
Las máquinas con Windows 10 deberían tener instalado el PowerShell en su versión 5.x y sin problemas con las versiones de .NET (actualizado). Por lo tanto, solo hay que preparar los listeners y hacer que admita conexiones no cifradas. Se ejecuta el siguiente script desde una consola de powershell como administrador tal y como propone la documentación ofical de Ansible de la siguiente manera (incluyendo el cambio de la variable para permitir conexiones no cifradas). Se ha de crear un script de Powershell con el siguiente contenido:
$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
$file = "$env:temp\ConfigureRemotingForAnsible.ps1"
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
powershell.exe -ExecutionPolicy ByPass -File $file
Set-Item -Path WSMan:\localhost\Service\AllowUnencrypted -Value $true
Se puede descargar de aquí.
Para poderlo ejecutar hay que habilitar la ejecución de scripts en Powershell:
> Set-ExecutionPolicy Unrestricted
Después, hay que abrir los puerto 5985 y 5986 en el firewall de Windows (reglas de entrada) y habilitar icpmv4 (ver más abajo).
Para activarlo puede que de un problema por el tipo de perfil de red. Si alguna conexión es pública, no te a a dejar activar el firewall para que funcione el WinRM. Para solucionarlo, se pone el perfil de red como privado y luego se activa (si sigue dando problemas, desactivar temporalmente el resto de conexiones de red):
> Set-NetConnectionProfile -NetworkCategory "Private"
> Enable-PSRemoting -Force -SkipNetworkProfileCheck