Si vous aimez les articles et la gratuité d' Abyss Project, merci de faire un don par paypal pour nous financer icon wink class=


Soutenons La Quadrature du Net !

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) :

windows-ansible

 

 

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 :

windows-ansible-02

 

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 🙂