Ansible : Automatisation, Orchestration et Déploiement
Administrer Windows avec Ansible
Cas particulier des hôtes Windows
Comme nous l’avons vu dans le chapitre précédent, les hôtes Windows n’ont pas de SSH activé par défaut . Même si c’était le cas, la connexion SSH entre une machine Linux et une machine Windows ne se fait pas de façon simple (comme sur deux OS Linux par exemple ). En effet, Windows a son propre module d’administration à distance et en ligne de commande . Ce module est appelé Windows Remote Management (WinRM) . Nous allons voir comment l’installer sur le Node-manager et comment le paramétrer sur un hôte (windows).
Configuration
Tous les modules Ansible permettant de gérer des hôtes Windows sont écrits en PowerShell . Il existe un script PowerShell écrit, proposé et conseillé par Ansible, qui permet de configurer WinRM sur les hôtes rapidement .
Ce script est disponible ici : https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1
Pour que ce script puisse fonctionner correctement, vous devez avoir au minimum la version 3 de PowerShell . Vérifier cela avec la commande : $PsVersionTable
Par contre, certains modules Ansible nécessite la version 5 de PowerShell . Veuillez bien vérifier les caractéristiques lorsque vous choisissez un module .
Les méthodes d’authentifications possible entre un serveur Ansible (Node-manager) et un client Windows (node) sont au nombre de cinq à savoir :
- Authentification basique
- Authentification à travers un certificat
- Authentification via Kerberos
- Authentification NTLM
- Authentification CredSSP
Pour notre tutoriel, nous verrons uniquement l’authentification basique afin de ne pas être trop long. Les autres types d’authentifications seront vus en détail dans un prochain chapitre .
Pour que la configuration réussisse bien, il faut s’assurer que python est bien installé. Pour cela, veuillez vérifier la version installée en entrant la commande suivante : python –version
Remarque : si vous rencontrez une erreur sur cette commande, vérifier que votre variable d’environnement contient bien le répertoire d’installation de python .
En général c’est /usr/bin/python (vous pouvez créer un lien symbolique par exemple : ln -s /usr/bin/python3.9 /usr/bin/python )
Si vous avez plusieurs version de python installées, vous pouvez également spécifier votre celle que vous souhaitez utiliser avec la commande : alternatives –config python
Installation des packages nécessaires
Je vais à présent installer les paquets suivant nécessaire au bon fonctionnement de la configuration .
- yum -y groupinstall “development tools”
C’est le kit de développement de CentOS (l’option -y permet de répondre “oui” à toutes les questions pendant l’installation)
- zlib-devel openssl-devel openssl libffi-devel :
Il s’agit respectivement : des fichiers d’entête pour le développement de la bibliothèque de compression (zlib), de la boîte à outils de chiffrement (openssl) et d’une bibliothèque permettant l’appel des fonctions compilées en C (libbffi ) .
- vérifier que le paquet pip est bien installé : python -m pip –version
Si vous rencontrez des erreurs, cela signifie que vous n’avez pas bien installé pip. Vous pouvez visiter ce site pour avoir plus d’informations à ce sujet .
- Installation de pyOpenSSL : pip3 install pyOpenSSL
Si vous rencontrez l’erreur suivante : Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-4aek_t2l/cryptography/ , cela signifie que vous devez installer la bibliothèque setuptools (en mode sudo ) et la mettre à jour
L’erreur mentionnée ci-dessus peut également être causée par une absence de la bibliothèque Rust , il s’agit d’un langage de programmation compilé.
Pour installer Rust, vous pouvez le télécharger en ligne, en entrant dans votre invite de commande : curl https://sh.rustup.rs -sSf | sh
- Les modules python : python3-winrm python3-requests
- C’est le paquet qui contient le module Windows Remote Management
- installation des paquets Python WinRM et Requests : yum -y install python2-winrm python2-requests
- pip install pyOpenSSL (installation de la bibliothèque de chiffrement OpenSSL à l’aide de pip )
- pip install “pywinrm”[credssp]” ==> Module pywinrm
- module pyton3-pip
- faire une mise à jour à la fin : yum -y update
Pour vérifier les versions installées, il faut entrer la commande : pip search “pywinrm[credssp]”