Aller au contenu

Administrer des serveurs Windows avec Ansible

logo ansible

Je continue mon exploration de l’environnement Windows et que de progrès parcouru pour le rendre compatible avec les outils Devops. En effet depuis la version 2.8 il est possible d’utiliser OpenSSH et non plus winrm pour manager des serveurs Windows avec Ansible et ce sans trop de modifications. Il faudra juste utiliser des modules propres à Windows, mais rien empêche d’espérer un jour de voir les modules linux compatible avec Windows.

Installation d’Ansible Windows ou pas?

La vous avez plusieurs possibilités :

Installation et paramétrage d’OpenSSH sur le serveur Windows

Je reprends ici l’installation d’OpenSSH sur les deux dernières versions de Windows Server. Le compte utilisateur que vous utiliserez coté Windows doit faire partie du groupe Administrateurs.

Windows Server 2016

  • Télécharger le binaire depuis le repo github et prenez la dernière release en version win64.zip.
  • Décompresser l’archive dans répertoire C:\Program Files.
  • Ouvrez une fenêtre Powershell en tant qu’Administrateur
  • Depuis le répertoire C:\Program Files\OpenSSH-Win64 Lancer “install-sshd.ps1”
  • Créer un répertoire .ssh dans votre profil : C:\users\stephane.r\.ssh.
  • Y Créer un fichier “authorized_keys” C:\users\stephane.r\.ssh\authorized_keys.
  • Ajoutez y le contenu la cle publique de votre node controller
  • Ouvrir le port 22 dans le Pare-feu Windows.
  • Dans la base de registre HKLM/SOFTWARE/OpenSSH créer une String Value DefaultShell avec C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe comme valeur
  • Editer le fichier C:\ProgramData\ssh\sshd_config:
    • décommenter PubkeyAuthentication yes.
    • commenter #Match Group administrators.
    • commenter #AuthorizedKeysFile PROGRAMDATA/ssh/administrators_authorized_keys.
  • Démarrer les services “OpenSSH SSH Server” & “OpenSSH Authentication Agent” et les mettre en démarrage automatique

Windows Server 2019

  • Ouvrez une fenêtre Powershell en tant qu’Administrateur
Terminal window
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
  • Créer un répertoire .ssh dans votre profil (ex: c:\users\pierrc.ssh)
  • Créer un répertoire .ssh dans votre profil : C:\users\stephane.r\.ssh
  • Y Créer un fichier “authorized_keys” C:\users\stephane.r\.ssh\authorized_keys
  • Ajoutez y le contenu la cle publique de votre node controller
  • Dans la base de registre HKLM/SOFTWARE/OpenSSH créer une String Value DefaultShell avec C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe comme valeur
  • Editer le fichier C:\ProgramData\ssh\sshd_config:
    • décommenter PubkeyAuthentication yes
    • commenter #Match Group administrators
    • commenter #AuthorizedKeysFile PROGRAMDATA/ssh/administrators_authorized_keys
  • Démarrer le service “OpenSSH SSH Server” et le mettre en démarrage automatique

Lancements de Playbooks Ansible sur des cibles Windows

Dans un premier temps testons juste que nous arrivons à pinger le serveur Windows.

Créer un fichier inventaire avec ce contenu:

[windows]
server_windows
[windows:vars]
ansible_shell_type=powershell

Lançons le module ping :

Terminal window
ansible -m win_ping -i inventaire all

Vous devriez obtenir :

Terminal window
$ ansible -m win_ping -i inventaire all
cwas01glr999d | SUCCESS => {
"changed": false,
"ping": "pong"
}

Maintenant testons le module win_feature, mais avant il faut installer la collection :

Terminal window
ansible-galaxy collection install ansible.windows

Editer votre playbook install-iis.yml et y mettre ceci:

---
- hosts: all
gather_facts: no
tasks:
- name: Install IIS Web-Server with sub features and management tools
ansible.windows.win_feature:
name: Web-Server
state: present
include_sub_features: yes
include_management_tools: yes
register: win_feature
- name: Reboot if installing Web-Server feature requires it
ansible.windows.win_reboot:
when: win_feature.reboot_required

Lancer votre playbook :

Terminal window
ansible-playbook -i inventaire install-iis.yml

Voila on a installé iis avec tous ces composants.

La liste de tous les modules windows

Si vous voulez plus de tutorials Ansible je vous renvoie sur le billet de l’introduction à ansible