Hello everyone, the goal of this post is to explain how to manage Windows Features using Ansible playbooks;
Bonjour à tous, le but de ce billet est d'expliquer comment gérer les fonctionnalités de Windows à l'aide des playbooks Ansible ;
Pour commencer, essayons de comprendre de quoi il s'agit. Nous voulons installer une fonctionnalité de Windows dans notre machine/vm et nous voulons le faire en utilisant Ansible pour automatiser toutes les installations et les ajouts.
Pour le faire en utilisant Ansible, nous devons utiliser des modules Ansible ! Et, dans ce cas, nous voulons utiliser le module win_feature. Mais qu'est-ce qu'un module ? Voyons voir :
Modules
Les modules Ansible sont des scripts réutilisables et autonomes qui peuvent être utilisés par l'API Ansible, ou par les programmes ansible ou ansible-playbook.
Nous pouvons utiliser les modules pour installer, copier, déplacer, télécharger et beaucoup d'autres actions. Il y a aussi beaucoup de modules différents, et je veux dire beaucoup !
Ansible a des modules pour le Cloud, les bases de données, le réseau, la surveillance, Windows, presque tout ce que vous pouvez imaginer !
Mais pour ce post, nous allons nous concentrer uniquement sur un module Windows spécifique fourni par Ansible qui est le module win_feature.
Notez que ce n'est qu'un aperçu rapide de ce que sont les modules ! Vous pouvez consulter la documetation officielle d'Ansible sur les modules pour avoir une analyse plus approfondie.
win_feature
Ce module installe ou désinstalle les rôles ou fonctionnalités de Windows sur Windows Server.
Mais, pour savoir quelle fonctionnalité nous voulons installer, nous devons trouver son nom. Pour cela, nous utiliserons une commande qui listera toutes les fonctionnalités avec l'information supplémentaire si elles sont installées ou non.
Tapez donc dans votre terminal la commande suivante :
Get-WindowsFeature
Vous devriez obtenir une liste complète des caractéristiques :
PS C:\> Get-WindowsFeature
Display Name Name Install State
------------ ---- -------------
[ ] Active Directory Certificate Services AD-Certificate Available
[ ] Certification Authority ADCS-Cert-Authority Available
[ ] Certificate Enrollment Policy Web Service ADCS-Enroll-Web-Pol Available
[ ] Certificate Enrollment Web Service ADCS-Enroll-Web-Svc Available
[ ] Certification Authority Web Enrollment ADCS-Web-Enrollment Available
[ ] Network Device Enrollment Service ADCS-Device-Enrollment Available
[ ] Online Responder ADCS-Online-Cert Available
(...)
[X] Web Server (IIS) Web-Server Installed
[X] Web Server Web-WebServer Installed
[X] Common HTTP Features Web-Common-Http Installed
[X] Default Document Web-Default-Doc Installed
[X] Directory Browsing Web-Dir-Browsing Installed
[X] HTTP Errors Web-Http-Errors Installed
[X] Static Content Web-Static-Content Installed
[X] HTTP Redirection Web-Http-Redirect Installed
[X] WebDAV Publishing Web-DAV-Publishing Installed
[X] Health and Diagnostics Web-Health Installed
[X] HTTP Logging Web-Http-Logging Installed
[X] Custom Logging Web-Custom-Logging Installed
[X] Logging Tools Web-Log-Libraries Installed
[X] ODBC Logging Web-ODBC-Logging Installed
[X] Request Monitor Web-Request-Monitor Installed
[X] Tracing Web-Http-Tracing Installed
[X] Performance Web-Performance Installed
[X] Static Content Compression Web-Stat-Compression Installed
[X] Dynamic Content Compression Web-Dyn-Compression Installed
(...)
[X] .NET Framework 4.7 Features NET-Framework-45-Fea... Installed
[X] .NET Framework 4.7 NET-Framework-45-Core Installed
[ ] ASP.NET 4.7 NET-Framework-45-ASPNET Available
[X] WCF Services NET-WCF-Services45 Installed
[ ] HTTP Activation NET-WCF-HTTP-Activat... Available
[ ] Message Queuing (MSMQ) Activation NET-WCF-MSMQ-Activat... Available
[ ] Named Pipe Activation NET-WCF-Pipe-Activat... Available
[ ] TCP Activation NET-WCF-TCP-Activati... Available
[X] TCP Port Sharing NET-WCF-TCP-PortShar... Installed
(...)
Maintenant, nous pouvons voir une liste complète de toutes les fonctionnalités de Windows (dans l'exemple ci-dessus, il n'y en a que quelques-unes) avec l'information supplémentaire si elles sont installées ou non.
Cela pourrait être un excellent moyen de voir quelles fonctionnalités vous devez ajouter à votre playbook.
Maintenant, laissez-moi vous montrer un moyen de savoir si une fonctionnalité dont vous connaissez déjà le nom est installée ou non.
Dans ce cas, nous allons rechercher la fonctionnalité .NET Framework. Nous allons vérifier le nom correct de la fonctionnalité et voir si elle est installée ou non.
Pour cela, nous allons utiliser la commande ci-dessous :
Get-WindowsFeature | Where-Object {$_. name-match ".Net"} | Format-List Name,DisplayName, Installstate | more
Le résultat sera le suivant :
Name : Print-Internet
DisplayName : Internet Printing
InstallState : Available
Name : Web-Net-Ext
DisplayName : .NET Extensibility 3.5
InstallState : Installed
Name : Web-Net-Ext45
DisplayName : .NET Extensibility 4.7
InstallState : Installed
Name : Web-Asp-Net
DisplayName : ASP.NET 3.5
InstallState : Installed
Name : Web-Asp-Net45
DisplayName : ASP.NET 4.7
InstallState : Installed
Name : NET-Framework-45-ASPNET
DisplayName : ASP.NET 4.7 #As you can see the feature is available, therefore not installed
InstallState : Available
Name : BitLocker-NetworkUnlock
DisplayName : BitLocker Network Unlock
InstallState : Available
Name : Internet-Print-Client
DisplayName : Internet Printing Client
InstallState : Available
Name : Telnet-Client
DisplayName : Telnet Client
InstallState : Available
Name : WAS-NET-Environment
DisplayName : .NET Environment 3.5
InstallState : Available
Name : Wireless-Networking
DisplayName : Wireless LAN Service
InstallState : Available
Maintenant que nous avons confirmé le nom et l'état de l'installation, nous pouvons ajouter à notre playbook.yaml le module win_feature dont nous avons parlé plus tôt dans l'article.
Regardons le playbook.yaml contenant le module win_feature.
---
- name: Install Windows Features
hosts: all
tasks:
- name: Install .Net Framework 4.5
win_feature:
name: NET-Framework-45-ASPNET
state: present
Comme vous pouvez le voir, playbook.yaml installera la dernière fonctionnalité Windows de .Net Framework.
Cherchons la fonction .net Framework sur notre terminal et voyons ce qui a changé :
PS C:\> Get-WindowsFeature | Where-Object {$_. name-match "NET-Framework-45-ASPNET"} | Format-List Name,DisplayName, Installstate | more
Name : NET-Framework-45-ASPNET
DisplayName : ASP.NET 4.7
InstallState : Installed
Et voilà ! Nous avons installé avec succès une fonctionnalité Windows de notre choix en utilisant les playbooks Ansible !
Maintenant, c'est à vous de voir quelle fonctionnalité de Windows vous souhaitez installer sur votre serveur !
Rappelez-vous que vous pouvez faire un playbook installant autant de fonctionnalités que vous le souhaitez. J'espère que ce post vous aidera à comprendre un peu mieux le module win_feature :)