Ansible Windows Modules

Aangezien er weinig ICT omgevingen zijn die uit alleen 1 OS bestaan, en Ansible zowel Linux als Windows kan automatiseren, ben ik ook eens gaan kijken naar de Windows modules voor ansible.

Om Windows via Ansible te automatiseren gebruiken we, in tegenstelling tot ssh onder Linux, WinRM. We zullen dus Ansible moeten uitbreiden om hier gebruik van te kunnen maken. Dat doen we door het volgende commando op de Ansible master te starten

pip install "pywinrm>=0.3.0"

Op de Windows machine runnen we het volgende commando in PowerShell:

Set-Item -Path WSMan:\localhost\Service\Auth\Basic -Value $true
Set-Item -Path WSMan:\localhost\Service\AllowUnencrypted -Value $true

Er zullen vast nog enkele andere dingen moeten worden ingesteld. Maar op https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html vind je een uitgebreide handleiding wat je allemaal kan/moet instellen

We maken vervolgens een entry aan in de hosts file voor de Windows machine:

[windows]
192.168.1.2

[windows:vars]
ansible_user=Administrator
ansible_password=Secret
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

Vervolgens maken we een playbook welke een bestand aanmaakt, new_file.txt, in de C:\Temp map onder windows:

---
- hosts: windows
  connection: winrm
  gather_facts: no
  tasks:
  - name: Create file
    win_file:
      path: C:\Temp\new_file.txt
      state: touch

Als we dit opslaan als windows1.yml en dan het volgende commando uitvoeren zou het bestand aangemaakt moeten worden:

ansible-playbook windows1.yml

Dit resulteert in het volgende filmpje