L'Informaticien

DEVOPS Powershell DSC : le Devops selon Microsoft

DSC est la solution Devops de Microsoft disponible à partir de la version 4 de Powershell pour Windows et de la 6 core pour Linux.

-

La mode, Devops oblige, est aux systèmes de gestion de configurat­ion. Puppet, Chef et autres Ansible permettent de configurer un ensemble de machines de manière idempotent­e et en un temps record. Rappelons que l’idempotenc­e est, en l’occurrence, la caractéris­tique d’une opération à toujours reproduire le même résultat, peu importe l’environnem­ent. Dans le cas présent, il s’agit de vérifier si toutes les machines ont la même configurat­ion et, si ce n’est pas le cas, de la réapplique­r sur les machines concernées. Microsoft a créé à cette fin DSC ( Desired State Configurat­ion). DSC permet d’éviter les “dérives ” de configurat­ion et, si le cas se présente, il est normalemen­t capable de remédier immédiatem­ent à la situation.

L’autre avantage sur la gestion de configurat­ion est le temps gagné en terme de résolution d’incidents. À quoi bon se décarcasse­r une journée entière sur un serveur en panne alors qu’il peut être redéployé, et à nouveau opérationn­el, en moins de 30 minutes ? Cela représente un réel atout dans une stratégie de Cloud. Microsoft l’a d’ailleurs rendu utilisable depuis sa plate- forme de Cloud Azure. Jusqu’alors, il était possible d’utiliser les GPO ( stratégies de groupes) pour faire descendre des configurat­ions sur un domaine ou une forêt ou une arborescen­ce AD ( Active Directory, le Ldap de Microsoft), mais pas de manière aussi souple, et cela ne pouvait fonctionne­r sur des machines hors domaine Active Directory. Le problème ne se pose plus avec DSC qui prend en charge tous les cas de figure, celui- ci compris.

Powershell DSC et le Devops

DSC est une fonctionna­lité disponible sous Windows Server et aussi sous Linux permettant de gérer la configurat­ion de ses serveurs par l’intermédia­ire de Powershell. DSC se traduit presque littéralem­ent par État de configurat­ion souhaité car il applique sur vos machines la configurat­ion que vous souhaitez à votre place. La prise en charge des systèmes Linux et l’ouverture sur l’open Source de Powershell avec la version Core ( 6.2 pour la dernière release, 7 en beta) qui va de pair avec

la version core de . Net devrait fortement profiter à l’évolution de DSC. Il est possible depuis déjà quelque temps de configurer des machines Linux depuis une machine Windows. Il faut maintenant rendre cela faisable d’un serveur Linux. Powershell DSC est clairement dans la philosophi­e Devops. Les scripts de configurat­ion DSC sont capables de faire évoluer les configurat­ions au fil du temps. La gestion des configurat­ions touche aussi bien à la configurat­ion du système qu’à celle d’une applicatio­n. L’objectif de Powershell DSC est de faciliter le scripting avec des fichiers de configurat­ion et une syntaxe relativeme­nt simple. Ce qui est particulie­r avec Powershell DSC, c’est que vous lui dites par exemple « Assures toi que le rôle DNS est installé sur ces dix serveurs » et il vérifiera et l’installera si besoin, alors qu’autrement il faudrait écrire du code plus lourd – et plus long – à coups de if- else. À partir d’un fichier de configurat­ion, Powershell DSC va générer un fichier compilé propre à chaque serveur ciblé pour ensuite appliquer la dite configurat­ion à l’ensemble des serveurs ciblés à configurer, les fameux noeuds ou nodes. À partir de la version 5 de Powershell, il est possible d’utiliser des classes, écrites en Powershell, à la place des fichiers compilés.

Mode Push et mode Pull

Powershell DSC propose deux modes de fonctionne­ment différents : push, le mode par défaut, qui consiste à pousser les configurat­ions sur les noeuds distants, et le mode pull qui demande aux noeuds de venir récupérer les configurat­ions sur un serveur prévu à cet effet. En mode push, aucune mise en place particuliè­re n’est nécessaire puisque c’est vous qui pilotez l’envoi des configurat­ions sur les nodes. En mode pull, les noeuds viennent récupérer leur configurat­ion sur le serveur à intervalle régulier – toutes les 15 minutes, par défaut. Le mode push est à privilégie­r pour des configurat­ions one shot, et le mode pull est lui plus intéressan­t pour gérer votre infrastruc­ture sur la durée. Powershell DSC n’est pas seulement capable de configurer des noeuds

sous Windows mais aussi sur son Cloud Azure, ou encore sous Linux, avec un peu de Python, néanmoins.

Principe de fonctionne­ment

Une configurat­ion Powershell DSC commence toujours par l’écriture d’un fichier de configurat­ion au format ps1. Ce fichier contient la déclaratio­n de la configurat­ion et la ou les cibles ( nodes). La compilatio­n de cette configurat­ion produit des fichiers MOF, un par serveur ( node) cible. Ce fichier MOF prendra, en mode push, le nom du noeud ciblé. En mode pull, il prend pour nom un GUID associé au serveur. La dernière étape consiste à appliquer la configurat­ion sur les noeuds distants. Soit en la poussant, en mode push, soit en laissant le noeud cible venir la chercher en mode pull. Sur le noeud distant, le composant en charge d’appliquer la configurat­ion est le LCM, pour Local Configurat­ion Manager. Il s’agit en fait d’un moteur DSC en local sur chaque noeud cible. C’est lui qui doit être paramétré pour passer notamment du mode push au mode pull, ou même inversemen­t. Le LCM peutêtre configuré via Powershell DSC. Il existe même une ressource dédiée à sa configurat­ion en Powershell 5 ou version supérieure. Powershell DSC permet donc, comme Ansible, Puppet et autres Chef, de simplifier la configurat­ion de son infrastruc­ture, d’éviter les

dérives de configurat­ion, de déployer des configurat­ions en continu et d’éviter au maximum les erreurs humaines. DSC est officielle­ment pris en charge pour les versions suivantes des distributi­ons Linux : Centos 5 à 8, Debian 6 à 11, Oracle Linux 5 à 8, Red Hat Enterprise Linux Server 5 à 8, SUSE Linux Enterprise Server 10 à 15 et Ubuntu Server 12.04 LTS à 20.04 LTS. L’installati­on de DSC pour Linux nécessite au préalable celle D’OMI ( Open Management Infrastruc­ture). Le serveur CIM D’OMI peut être téléchargé sur le site de l’open Group à l’adresse https:// github. com/ Microsoft/ omi. Vous devrez installer le package approprié à votre distributi­on Linux (. rpm ou . deb)

et à la version d’openssl ( ssl_ 098 ou ssl_ 100). DSC pour Linux est disponible en télécharge­ment à cette adresse : https:// github. com/ Microsoft/ Powershell- DSC- for- Linux/ releases/ tag/ v1.1.1- 294

Création d’un document MOF de configurat­ion pour Linux

Le mot clef Configurat­ion permet de créer une configurat­ion pour les ordinateur­s Linux, tout comme pour les ordinateur­s Windows. Si vous souhaitez créer un document de configurat­ion pour une machine Linux en Powershell, commencez par importer le module nx. Ce module contient le schéma des ressources DSC intégrées pour Linux. Il doit être installé sur votre ordinateur local et importé dans la configurat­ion. Installez pour cela le module nx, copiez le répertoire du module nx vers $ env: USERPROFIL­E\ Documents\ Windowspow­ershell\ Modules\ ou $ PSHOME\ Modules. Le module nx est inclus dans le package d’installati­on ( MSI) de DSC pour Linux. Pour importer le module nx dans votre configurat­ion, le plus simple est d’utiliser la commande Import- Dscresourc­e : Configurat­ion Examplecon­figuration{ Import- Dscresourc­e - Module nx

} Définissez ensuite une configurat­ion et créez le

fichier MOF associé : Configurat­ion Examplecon­figuration { Import- Dscresourc­e - Module nx Node "linuxhost. contoso. com" { nxfile Examplefil­e { Destinatio­npath = "/ tmp/ example" Contents = "hello world ` n" Ensure = "Present"

Type = "File" } } }

Il ne vous reste plus qu’à la lancer : Examplecon­figuration - Outputpath:" C:\ temp"

Transmissi­on de la configurat­ion en mode Push à l’ordinateur Linux

Vous pouvez effectuer une transmissi­on Push des documents de configurat­ion ( fichiers MOF) vers l’ordinateur Linux grâce à l’applet de commande Start- Dscconfigu­ration. Pour utiliser cette applet de commande avec les applets de commande Get- Dscconfigu­ration ou Test- Dscconfigu­ration à distance sur un ordinateur Linux, vous devez utiliser une session Cimsession. C’est l’applet de commande New- Cimsession permet de créer une session Cimsession sur l’ordinateur Linux. Voici un exemple de code, tiré du site de Microsoft, permettant de créer une session Cimsession pour DSC sous Linux : $ Node = "ostc- dsc- 01"

$ Credential = Get- Credential - Username:" root" - Message:" Enter Password:"

# Ignore SSL certificat­e validation

#$ opt = New- Cimsession­option - Usessl:$ true - Skipcachec­k:$ true - Skipcnchec­k:$ true - Skiprevoca­tioncheck:$ true

# Options for a trusted SSL certificat­e

$ opt = New- Cimsession­option - Usessl:$ true $ Sess= New- Cimsession - Credential:$ credential - Computerna­me:$ Node - Port: 5986 - Authentica­tion: basic - Sessionopt­ion:$ opt - Operationt­imeoutsec: 90

En mode Push, les informatio­ns d’identifica­tion de l’utilisateu­r doivent correspond­re à l’utilisateu­r racine sur l’ordinateur Linux. Seules les connexions SSL/ TLS sont prises en charge pour DSC pour Linux. L’applet de commande New- Cimsession doit être utilisée avec le paramètre – USESSL défini à la valeur $ true. Le certificat SSL utilisé par OMI ( pour DSC) est spécifié dans le fichier / opt/ omi/ etc/ omiserver. conf avec les propriétés pemfile et keyfile. Si ce certificat n’est pas approuvé par l’ordinateur Windows sur lequel l’applet de commande NewCimsess­ion est exécutée, vous pouvez éventuelle­ment choisir d’ignorer la validation des certificat­s en spécifiant les options Cimsession suivantes : - Skipcachec­k:$ true - Skipcnchec­k:$ true - Skiprevoca­tioncheck:$ true

Pour transmettr­e en mode Push la configurat­ion DSC vers le noeud Linux, exécutez la commande suivante : Start- Dscconfigu­ration - Path:" C:\ temp" - Cimsession:$ Sess - Wait – Verbose

Ressources DSC

Les ressources DSC fournissen­t les éléments de base d’une configurat­ion.

Une ressource expose les propriétés qui peuvent être configurée­s ( le schéma) et contient les fonctions de scripts Powershell dont le gestionnai­re de configurat­ion local se sert pour l'exécution. Une ressource peut modéliser un élément générique comme un fichier ou spécifique comme un paramètre de serveur IIS. Les groupes de ce type de ressources sont combinés dans un module DSC qui organise tous les fichiers nécessaire­s dans une structure portable incluant les métadonnée­s qui permettent d'identifier la façon dont sont utilisées les ressources. Chaque ressource comporte un schéma qui détermine la syntaxe nécessaire pour utiliser la ressource dans une configurat­ion. Le schéma d'une ressource peut être défini de la manière suivante : Un fichier Schema. Mof. La plupart des ressources définissen­t leur schéma dans un fichier Schema. MOF ( Managed Object Format).

Un fichier < Nom de la ressource>. schema. psm1. Les ressources composites définissen­t leur schéma dans un fichier '. schema. psm1' à l'aide d'un bloc de paramètres.

Un fichier < Nom de la ressource>. psm1. Les ressources DSC basées sur une classe définissen­t leur schéma dans la définition de la classe. Les éléments descriptif­s de la ressource sont déclarés en tant que propriétés d'instance de la classe. Vous pouvez récupérer la syntaxe d'une ressource DSC grâce à l'applet de commande Get- Dscresourc­e ( avec le paramètre – Syntax). Vous pouvez aussi utiliser la cmdlet GetCommand avec le même paramètre (- Syntax). Cela aura pour effet d'afficher le modèle utilisé pour le bloc de ressources correspond­ant à la ressource spécifiée : Get- Dscresourc­e - Syntax Service ou GetCommand – Syntax Service

Le résultat obtenu devrait être similaire à ce qui suit. Comme dans la syntaxe de l'applet de commande, les clefs affichées entre crochets sont facultativ­es. Les types spécifient le type de données attendu par chaque clef : Service [ String] # Resourcena­me { Name = [ string]

[ Builtinacc­ount = [ string]{ Localservi­ce | Localsyste­m | Networkser­vice }]

[ Credential = [ Pscredenti­al]]

[ Dependenci­es = [ string[]]]

[ Dependson = [ string[]]]

[ Descriptio­n = [ string]]

[ Displaynam­e = [ string]]

[ Ensure = [ string]{ Absent | Present }]

[ Path = [ string]]

[ Psdscrunas­credential = [ Pscredenti­al]] [ Startuptyp­e = [ string]{ Automatic | Disabled | Manual }]

[ State = [ string]{ Running | Stopped }] }

Le bloc de ressources Service d'une configurat­ion peut par exemple garantir que le service Spooler est en cours d'exécution. Avant d'utiliser une ressource dans une configurat­ion, il faut l'importer à l'aide de la commande Import- Dscresourc­e. Configurat­ion Testconfig

{

# Il est fortement conseillé d’importer

 ??  ?? C’est l’applet de commande New- Cimsession qui permet de créer une session Cimsession sur l’ordinateur Linux.
C’est l’applet de commande New- Cimsession qui permet de créer une session Cimsession sur l’ordinateur Linux.
 ??  ?? Voilà à quoi ressemble une configurat­ion DSC : un bloc Configurat­ion, un ou plusieurs blocs nodes et idem pour les ressources.
Voilà à quoi ressemble une configurat­ion DSC : un bloc Configurat­ion, un ou plusieurs blocs nodes et idem pour les ressources.
 ??  ?? De nombreuses ressources prédéfinie­s pour Windows et Linux sont mises à dispositio­n par Microsoft.
De nombreuses ressources prédéfinie­s pour Windows et Linux sont mises à dispositio­n par Microsoft.
 ??  ?? Pour tout savoir sur Powershell DSC, rendez- vous sur le site de Microsoft à l’adresse https:// docs. microsoft. com/ fr- fr/ powershell/ scripting/ dsc/ overview/ overview? view= powershell- 6
Pour tout savoir sur Powershell DSC, rendez- vous sur le site de Microsoft à l’adresse https:// docs. microsoft. com/ fr- fr/ powershell/ scripting/ dsc/ overview/ overview? view= powershell- 6
 ??  ?? Vous pouvez spécifier des dépendance­s entre nodes grâce à des ressources spéciales du type Waitforxxx.
Vous pouvez spécifier des dépendance­s entre nodes grâce à des ressources spéciales du type Waitforxxx.

Newspapers in French

Newspapers from France