Ansible communique avec Windows grace au protocole winrm, il n'est pas possible d'utiliser SSH. Winrm est apparu avec la version 3.0 de powershell. C'est la version qui est installé par défaut sur Windows 2012 et/ou Windows 8.0

Installation sur le serveur Ansible (Linux)

  • apt-get install python-pip
  • pip install pywinrm

Dans le fichier /etc/ansible/host, il faut ajouter la ligne suivante pour se connecter à un serveur 'windemo', dans le domaine truc.fr. Vous utilisez bien sur le login et le mot de passe de l'adminitrateur du domaine.

  • windemo ansible_host=192.168.1.5 ansible_connection=winrm ansible_port=5986 ansible_user=Administrateur ansible_password=qqchose ansible_winrm_server_cert_validation=ignore
  • windemo ansible_host=192.168.1.5 ansible_connection=winrm ansible_port=5986 ansible_user=Administrateur@truc.fr ansible_password=qqchose ansible_winrm_server_cert_validation=ignore

Remarquez que le fichier /etc/ansible/host n'est pas sécurisé (je n'aborde pas le sujet aujourd'hui)

Installation sur Windows (machine 'windemo' dans mon cas)

  • Ouvrir le powershell
  • Vérifiez que la version de powershell est au minimum 3.0 : $PsVersionTable
  • Téléchargez le script : ConfigureRemotingForAnsible.ps1
  • Activer l'execution des scripts : Set-ExecutionPolicy Unrestricted
  • Attention, le script ne fonctionne que si la carte réseau est en mode "privé".
  • Executez le script ConfigureRemotingForAnsible.ps1. Ce script crée un certificat valide pendant 10 ans et ouvre le port 5986 en écoute.
  • La version 3.0 de powershell pose un problème de mémoire avec certaines commandes ansible. Téléchargez et executez le script : Install-WMF3Hotfix.ps1
  • Eventuellement : Set-ExecutionPolicy Restricted

Vérification, à partir du serveur Ansible

  • ansible windemo -m win_ping
  • ansible windemo -m win_shell -a 'dir c:\'