# WinRM

Il protocollo W`indows Remote Management` (`WinRM`) è impiegato da Ansible per la comunicazione con host Windows, a differenza delle macchine Unix, dove il collegamento avviene tramite SSH.

## Requisiti

Per configurare correttamente WinRM, è necessario soddisfare i seguenti requisiti:

- Installare il pacchetto `pywinrm` sul node-manager Ansible, tramite il comando `pip install pywinrm`
- Windows 7, Windows Server 2008 o versioni successive sui nodi da gestire
- PowerShell 3.0 e .NET 4.0 o versioni successive
- Per configurare WinRM, bisogna eseguire sui nodi lo script ufficiale di Ansible [`ConfigureRemotingForAnsible.ps1`](https://github.com/ansible/ansible-documentation/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1). Questo crea due listener, uno per il protocollo HTTP e uno per il protocollo HTTPS, sulla macchina Windows. Genera inoltre un certificato autofirmato e implementata un sistema di autenticazione di tipo BASIC, che richiede un nome utente e una password

## Configurazione del playbook

Nel playbook, è necessario specificare le seguenti variabili:

- `ansible_user`
- `ansible_password`
- `ansible_connection`: deve essere impostato sul protocollo WinRM
- `ansible_winrm_server_cert_validation`: da essere impostare su *ignore* per evitare comunicazioni tramite HTTPS con i nodi. Poiché lo script genera un certificato autofirmato, questo non sarà riconosciuto come valido

```yaml
---
- name: example winrm
  hosts: winhost
  tasks:
    - name: install Firefox
      win_chocolatey:
        name: firefox
        state: latest
        force: yes
```
