Ansible: Gestión de máquina Windows
Os explicamos como configurar Ansible para poder automatizar procesos para Windows.
Lo que buscamos es poder utilizar la automatización de Ansible con servidores o máquinas Windows.
Necesitaremos modificar tanto nuestro server Ansible, como nuestros clientes Windows.
Os dejo URL oficial: https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html
Nos ponemos manos a la masa.
Ansible: preparar server para clientes Windows
Usaremos el siguiente módulo y configuraciones que vamos a instalar de la siguiente forma. Parto de tener pip ya instalado (yum install pip):
pip install https://github.com/diyan/pywinrm/archive/master.zip#egg=pywinrm
pip install kerberos
A nivel de sistema, añadiremos si no los tenemos ya, los paquetes:
yum -y install gcc python-devel krb5-devel krb5-workstation
Ansible: preparar clientes Windows
Para poder automatizar acciones con Ansible sobre clientes Windows, usaremos WinRM. Para eso tendremos que preparar nuestros clientes, para que escuchen en el puerto de WinRM, tendrán que tener el servicio levantado y si disponen de Firewall el puerto abierto.
Deberemos tener el .NET y Powershell en línea con lo que marca Ansible. Os dejo el PS1:
1 2 3 4 5 6 7 8 9 10 |
$url = "https://raw.githubusercontent.com/jborean93/ansible-windows/master/scripts/Upgrade-PowerShell.ps1" $file = "$env:temp\Upgrade-PowerShell.ps1" $username = "Administrator" $password = "Password" (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force # Version can be 3.0, 4.0 or 5.1 &$file -Version 5.1 -Username $username -Password $password -Verbose |
Lanzamos el siguiente script para modificar el sistema:
1 2 3 4 5 6 |
$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 |
Y para terminar, modificamos al terminar la política de ejecución y eliminamos el WinLogon, para dejarlo seguro:
1 2 3 4 5 6 7 |
# This isn't needed but is a good security practice to complete Set-ExecutionPolicy -ExecutionPolicy Restricted -Force $reg_winlogon_path = "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" Set-ItemProperty -Path $reg_winlogon_path -Name AutoAdminLogon -Value 0 Remove-ItemProperty -Path $reg_winlogon_path -Name DefaultUserName -ErrorAction SilentlyContinue Remove-ItemProperty -Path $reg_winlogon_path -Name DefaultPassword -ErrorAction SilentlyContinue |
Revisamos que está escuchando:
1 |
winrm enumerate winrm/config/Listener |
Validarlo con un telnet o curl, por ejemplo:
curl -vk -d "" -u administrator:usuariopassword http://192.168.59.138:5985/wsman
o por ejemplo:
telnet neguad01.negu.local 5985
Usaremos adicionalmente, credenciales de directorio activo para conectarnos. Generamos un fichero de INVENTARIO y otro con las VARIABLES:
El fichero de inventario:
1 2 3 4 |
mkdir /etc/ansible/inventory nano windows [windows] 192.168.59.138 |
Para las variables:
1 2 3 4 5 6 7 8 9 10 11 |
mkdir /etc/ansible/group_vars nano windows Con el siguiente contenido --- ansible_user: Administrator ansible_password: PasswordUsuario ansible_port: 5986 ansible_connection: winrm ansible_winrm_server_cert_validation: ignore |
Y hacemos la prueba:
1 |
ansible windows -m win_ping -i inventory/windows -e group_vars/windows |
Realizaremos otras entradas más adelante…
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?