Ansible et Windows

De Justine's wiki
Version datée du 23 août 2019 à 10:10 par Justine (discussion | contributions) (Page créée avec « = Ansible et Windows = https://www.it-connect.fr/debutez-avec-ansible-et-gerez-vos-serveurs-windows/#III_Preparer_les_hotes_Windows https://docs.ansible.com/ansible/latest... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Ansible et Windows

https://www.it-connect.fr/debutez-avec-ansible-et-gerez-vos-serveurs-windows/#III_Preparer_les_hotes_Windows https://docs.ansible.com/ansible/latest/user_guide/windows.html

Bien que l'on ne puisse exécuter Ansible que depuis un système Linux, celui-ci peut gérer des hôtes Windows. En effet, celui-ci utilise :

  • WinRM : au lieu de SSH, Ansible utilise WinRM, qui est le protocole de contrôle à distance de Microsoft, basé sur HTTP.
  • Les modules sont écrit en PowerShell plutôt qu'en Python. Ils sont moins nombreux que pour Linux.

Nous allons ici essayer de lancer des playbooks sur un hôte Windows.

Préparer la machine cible

https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html

Il nous faut PowerShell version 3.0 et .NET 4.0, sur du Win2008 ou Win7. Ansible nous fournit des scripts qui font cela pour nous :

$url = "https://raw.githubusercontent.com/jborean93/ansible-windows/master/scripts/Upgrade-PowerShell.ps1"
$file = "$env:temp\Upgrade-PowerShell.ps1"
$username = "Administrator"
$password = "Password"

(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force

# Version can be 3.0, 4.0 or 5.1
&$file -Version 5.1 -Username $username -Password $password -Verbose

# This isn't needed but is a good security practice to complete
Set-ExecutionPolicy -ExecutionPolicy Restricted -Force
#Deuxième partie
$reg_winlogon_path = "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon"
Set-ItemProperty -Path $reg_winlogon_path -Name AutoAdminLogon -Value 0
Remove-ItemProperty -Path $reg_winlogon_path -Name DefaultUserName -ErrorAction SilentlyContinue
Remove-ItemProperty -Path $reg_winlogon_path -Name DefaultPassword -ErrorAction SilentlyContinue

Enfin, il faut également mettre en place WinRM si ce n'est pas fait. La page donnée en lien ci-dessus donne les dernières informations à ce propos.

=TrustedHOsts

Si le serveur WinRM ne veut pas nous laisser venir, il faudra peut-être ajouter la amchine ansible aux TrustedHosts :

Set-Item WSMan:\localhost\Client\TrustedHosts machineansible.justine.com

Préparation côté Ansible

Tout devrait être dispo, à part peut-être:

pip install "pywinrm>=0.2.2" --user

Je commence par un classique fichier d'inventaire :

[winserv]
193.51.101.108

Cependant, nous avons un problème : WinRM ne fonctionne pas par clef SSH ! Nous allons devoir stocker des mots de passe. Nous allons donc créer avec Ansible-vault un fichier pour cela :

[justine@localhost playbookwindows]$ mkdir group_vars [justine@localhost playbookwindows]$ export EDITOR='/usr/bin/vim' #Sinon vault ne sait pas avec quoi j'édite [justine@localhost playbookwindows]$ cd group_vars/ [justine@localhost group_vars]$ ansible-vault create winserv.yml #winserv comme le groupe d'hotes #Puis rentrer les mots de passe

Voici le contenu que je lui donne :

ansible_ssh_user: Administrateur ansible_ssh_pass: password123 ansible_ssh_port: 5986 #5986 correspond a la version https, 5985 a la version non securisee ansible_connection: winrm

Je peux éditer avec:

ansible-vault edit monfichier