Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.
Bonjour à tous,
Toujours dans la suite des articles sur Ansible qui commencent à être nombreux, aujourd’hui on va voir comment gérer ses serveurs Windows avec Ansible.
Il va falloir faire deux trois manips aussi bien sur les serveurs Windows que sur le serveur Ansible pour que tout ce petit monde veuille bien cohabiter, mais rien d’insurmontable, même pour un pur adminsys windows qui n’a jamais vu un Linux de sa vie (sisi, juré).
Installation du serveur Ansible :
Suivez la procédure suivante pour installer votre serveur Ansible.
Ensuite, installez pip (si vous ne l’avez pas déjà) et winrm pour Python :
apt-get install -y python-pip && pip install pywinrm
Si vous comptez utiliser des comptes Active Directory pour la maintenance alors, installez les prérequis pour Kerberos :
(ndr : Je vous recommande de déployer un compte admin local par GPO plutôt, ça évite tous les problèmes de Kerberos)
apt-get install -y python-dev libkrb5-dev krb5-user && pip install kerberos
Préparation des serveurs Windows :
Bon, si vous êtes dans un domaine, ce qui est cool c’est que vous n’aurez pas à vous prendre la tête pour les noms communs de vos serveurs.
Le domaine gère déjà tout cela et créer les entrées DNS qui correspondent dans le serveur DNS de l’AD.
En revanche, si vous n’avez pas d’AD, vous devez paramétrer des DNS locaux sur chaque serveur comme ceci (c’est important pour WinRM pour la suite) :
Ensuite, va falloir déployer un petit script fourni par Ansible que j’ai modifié.
Le script configure automatiquement WinRM (Windows Remote Management) pour vous et ouvre le pare-feu tout seul (juste pour ce service).
Téléchargez le script suivant : https://github.com/stylersnico/ansible/blob/115aaeb17c4e13d6ef8420acd7143fddbf33ea5f/examples/scripts/ConfigureRemotingForAnsible.ps1
Lancez ensuite Powershell en tant qu’Administrateur :
Autorisez d’abord l’exécution de n’importe quel script :
Set-ExecutionPolicy Unrestricted
Lancez-le :
.\ConfigureRemotingForAnsible.ps1
Et remettez en place la protection contre l’exécution des scripts :
Set-ExecutionPolicy Restricted
Configuration des hôtes sur Ansible :
De retour sur le serveur Ansible.
Éditez d’abord le fichier hosts de Ansible pour ajouter vos serveurs :
cd /etc/ansible/ && nano hosts
Ajoutez vos hôtes Windows comme ceci, le domaine que vous mettez ici doit correspondre exactement à ce qu’il y’a sur le serveur :
[windows] AD01.domain.local AD02.domain.local IIS.domain.local
Ensuite, créez un fichier de variables pour ces hôtes :
mkdir group_vars && cd group_vars && nano windows.yml
Et ajoutez les informations suivantes :
ansible_user: Administrateur ansible_password: password ansible_port: 5986 ansible_connection: winrm # The following is necessary for Python 2.7.9+ when using default WinRM self-signed certificates: ansible_winrm_server_cert_validation: ignore
Modifiez simplement le compte (utilisez @domain.local après l’utilisateur pour un utilisateur de domaine) et le mot de passe (password).
Pour faire propre, on va chiffrer la bête avec de l’aes256 :
ansible-vault encrypt windows.yml
Pour déchiffrer la bête si vous souhaitez l’éditer, lancez la commande suivante :
ansible-vault decrypt windows.yml
Pour tester la bonne communication avec vos serveurs, lancez la commande suivante :
ansible windows -m win_ping --ask-vault-pass
La sortie devrait avoir une tête similaire :
ansible windows -m win_ping --ask-vault-pass Vault password: IIS-LE.test.local | SUCCESS => { "changed": false, "ping": "pong" }
Et voilà, pour le prochain article, on verra comment se servir d’Ansible pour gérer (ce qui devrait être) la préoccupation majeure des sysadmins Windows 🙂
[…] J’en avais parlé dans mon article sur la gestion des Windows avec Ansible : https://www.abyssproject.net/2016/09/gerer-serveurs-windows-ansible/ […]