Fil d'actualités sur les transformateurs numériques, GDPR, AI, SSI, VR, e-société … – Serveur d’impression
Sommaire
DevOps selon Microsoft
DSC est la solution DevOps de Microsoft disponible à partir de la version 4 de Powershell pour Windows et de 6 cœurs pour Linux.
C'est la cmdlet New-CimSession qui crée une session CIMSession sur l'ordinateur Linux.
La mode, nécessite DevOps, est les systèmes de gestion de configuration. Puppet, Chef et autres Ansible vous permettent de configurer un ensemble de machines de manière idempotente et en un temps record. Rappelons que l'idempotence est, dans ce cas, la caractéristique d'une opération pour toujours reproduire le même résultat, quel que soit l'environnement. Dans ce cas, il s'agit de vérifier si toutes les machines ont la même configuration et, si ce n'est pas le cas, de la réappliquer sur les machines concernées.
Microsoft a créé DSC (Desired State Configuration) à cet effet. DSC permet d'éviter les «dérives» de configuration et, le cas échéant, il est normalement capable de remédier immédiatement à la situation.
L'autre avantage par rapport à la gestion de la configuration est le gain de temps en termes de résolution des incidents. Quel est l'intérêt de se débarrasser d'une journée entière sur un serveur qui est en panne alors qu'il peut être redéployé, et à nouveau opérationnel, en moins de 30 minutes? Cela représente un réel atout dans une stratégie Cloud.
Microsoft l'a rendu utilisable à partir de sa plateforme Cloud Azure. Jusque-là, il était possible d'utiliser des objets de stratégie de groupe (stratégies de groupe) pour supprimer des configurations sur un domaine ou une forêt ou une arborescence AD (Active Directory, Microsoft Ldap), mais pas de manière si flexible, et cela pourrait ne fonctionne que sur des machines en dehors du domaine Active Directory. Le problème ne se pose plus avec DSC qui s'occupe de tous les cas, celui-ci compris.
Powershell DSC et DevOps
DSC est une fonctionnalité disponible sous Windows Server et également sous Linux permettant de gérer la configuration de ses serveurs via PowerShell. DSC se traduit presque littéralement par l'état de configuration souhaité car il applique la configuration souhaitée sur vos machines. 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 version, 7 en bêta) qui accompagne la version core de .Net devrait grandement bénéficier à l'évolution de DSC. Il est possible depuis un certain temps de configurer des machines Linux à partir d'une machine Windows. Vous devez maintenant le rendre possible à partir d'un serveur Linux. PowerShell DSC est clairement dans la philosophie DevOps. Les scripts de configuration DSC sont capables de modifier les configurations au fil du temps. La gestion de la configuration affecte à la fois la configuration du système et celle d'une application. L'objectif de PowerShell DSC est de faciliter l'écriture de scripts avec des fichiers de configuration et une syntaxe relativement simple. La particularité de PowerShell DSC est que vous dites, par exemple, Assurez-vous que le rôle DNS est installé sur ces dix serveurs "Et il vérifiera et installera si nécessaire, sinon vous devrez écrire du code plus lourd – et plus long avec if-else. À partir d'un fichier de configuration, PowerShell DSC générera un fichier compilé spécifique à chaque serveur cible, puis appliquera ladite configuration à tous les serveurs ciblés à configurer, les fameux nœuds ou nœuds A partir de la version 5 de PowerShell, il est possible d'utiliser des classes, écrites en Powershell, au lieu de fichiers compilés.
Voici à quoi ressemble une configuration DSC: un bloc de configuration, un ou plusieurs blocs de nœuds et idem pour les ressources.
Mode push et mode pull
PowerShell DSC propose deux modes de fonctionnement différents: push, le mode par défaut, qui consiste à pousser les configurations sur les nœuds distants, et le mode pull qui oblige les nœuds à venir récupérer les configurations sur un serveur prévu à cet effet. En mode push, aucune implémentation particulière n'est nécessaire puisque c'est vous qui contrôlez l'envoi des configurations sur les nœuds. En mode pull, les nœuds viennent récupérer leur configuration à partir du serveur à intervalles réguliers – toutes les 15 minutes, par défaut. Le mode push est préféré pour les configurations un tiret le mode pull est plus intéressant pour gérer votre infrastructure au fil du temps. PowerShell DSC est non seulement capable de configurer des nœuds sur Windows mais également sur son Azure Cloud, ou même sur Linux, avec un peu de Python, cependant.
Principe d'opération
Une configuration PowerShell DSC commence toujours par l'écriture d'un fichier de configuration au format ps1. Ce fichier contient la déclaration de configuration et la ou les cibles (nœuds). La compilation de cette configuration produit des fichiers MOF, un par serveur cible (nœud). Ce fichier MOF prendra, en mode push, le nom du nœud ciblé. En mode pull, il prend comme nom un GUID associé au serveur. La dernière étape consiste à appliquer la configuration sur les nœuds distants. Soit en le poussant, en mode push, soit en laissant le nœud cible le récupérer en mode pull. Sur le nœud distant, le composant en charge de l'application de la configuration est le LCM, pour Local Configuration Manager. Il s'agit en fait d'un moteur DSC local sur chaque nœud cible. C'est lui qui doit être configuré pour passer du mode push au mode pull, ou vice versa. LCM peut être configuré via PowerShell DSC. Il existe même une ressource dédiée à sa configuration dans PowerShell 5 ou supérieur. PowerShell DSC permet donc, comme Ansible, Puppet et autres Chef, de simplifier la configuration de son infrastructure, d'éviter les dérives de configuration, de déployer des configurations en continu et d'éviter autant que possible les erreurs humaines. DSC est officiellement pris en charge pour les versions suivantes des distributions 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'installation de DSC pour Linux nécessite au préalable celle d'OMI (Open Management Infrastructure). Le serveur IMO CIM peut être téléchargé à partir du site Web d'Open Group à l'adresse https://github.com/Microsoft/omi. Vous devrez installer le package approprié pour votre distribution Linux (.rpm ou .deb) et pour la version d'OpenSSL (ssl_098 ou ssl_100). DSC pour Linux est disponible en téléchargement à cette adresse: https://github.com/Microsoft/ PowerShell-DSC-for-Linux / releases / tag / v1.1.1-294
De nombreuses ressources prédéfinies pour Windows et Linux sont mises à disposition par Microsoft.
Création d'un document de configuration MOF pour Linux
Le mot-clé Configuration crée une configuration pour les ordinateurs Linux, tout comme pour les ordinateurs Windows. Si vous souhaitez créer un document de configuration pour une machine Linux dans PowerShell, importez d'abord 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 configuration. Pour ce faire, installez le module nx, copiez le répertoire du module nx dans $ env: USERPROFILE Documents WindowsPowerShell Modules ou $ PSHOME Modules. Le module nx est inclus dans le package d'installation DSC (MSI) pour Linux. La façon la plus simple d'importer le module nx dans votre configuration est d'utiliser la commande Import-DSCResource:
Pour plus d'informations sur Powershell DSC, accédez au site Web de Microsoft à l'adresse https://docs.microsoft.com/fr-fr/powershell/scripting/dsc/overview/overview?view=powershell-6
Pousser la configuration de configuration vers un ordinateur Linux
Vous pouvez envoyer des documents de configuration (fichiers MOF) à l'ordinateur Linux à l'aide de l'applet de commande Start-DscConfiguration. Pour utiliser cette applet de commande avec les applets de commande Get-DscConfiguration ou Test-DscConfiguration à distance sur un ordinateur Linux, vous devez utiliser une session CIMSession. Il s'agit de l'applet de commande New-CimSession utilisée pour créer une session CIMSession sur l'ordinateur Linux. Voici un exemple de code, extrait du site Microsoft, permettant de créer une session CIMSession pour DSC sous Linux:
En mode Push, les informations d'identification de l'utilisateur doivent correspondre à l'utilisateur root 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 sur $ 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 la cmdlet NewCimSession s'exécute, vous pouvez éventuellement choisir de contourner la validation du certificat en spécifiant les options CIMSession suivantes:
Pour pousser la configuration DSC vers le nœud Linux en mode Push, exécutez la commande suivante:
Ressources DSC
Les ressources DSC fournissent les éléments de base d'une configuration. Une ressource expose les propriétés qui peuvent être configurées (le schéma) et contient les fonctions de script PowerShell que le gestionnaire de configuration local utilise pour l'exécution. Une ressource peut modéliser un élément générique comme un fichier ou un élément spécifique comme un paramètre de serveur IIS. Les groupes de ce type de ressource sont regroupés dans un module DSC qui organise tous les fichiers nécessaires dans une structure portable comprenant des métadonnées qui permettent d'identifier la manière dont les ressources sont utilisées. Chaque ressource possède un schéma qui détermine la syntaxe nécessaire pour utiliser la ressource dans une configuration. Le schéma d'une ressource peut être défini comme suit:
Un fichier Schema.Mof. La plupart des ressources définissent leur schéma dans un fichier au format d'objet géré (Schema.MOF).
Un fichier
Un fichier
Le résultat doit être similaire au suivant. Comme dans la syntaxe de la cmdlet, les clés affichées entre crochets sont facultatives. Les types spécifient le type de données attendues par chaque clé:
Par exemple, le bloc de ressources Service dans une configuration peut garantir que le service Spouleur est en cours d'exécution. Avant d'utiliser une ressource dans une configuration, elle doit être importée à l'aide de la commande Import-DSCResource.
Les configurations peuvent contenir plusieurs instances du même type de ressource, mais chaque instance doit avoir un nom unique. Dans l'exemple suivant, un deuxième bloc de ressources de service est ajouté pour configurer le service DHCP.
Configuration LCM
Le gestionnaire de configuration local (LCM) est le moteur de la fonctionnalité DSC. LCM s'exécute sur chaque nœud cible pour analyser et appliquer les configurations transmises au nœud. Il est également en charge de plusieurs autres opérations liées au DSC dont notamment la détermination du mode de mise à jour (push ou pull), la spécification de la fréquence à laquelle un nœud extrait et applique les configurations, l'association du nœud avec un service d'extraction et spécification de configurations partielles. Un type spécial de configuration vous permet de configurer le LCM pour définir chacun de ces comportements.
Création et application d'une configuration LCM
Pour configurer LCM, vous devez créer et exécuter un type spécial de configuration qui applique ses paramètres. La spécification d'une configuration LCM se fait via l'attribut DscLocalConfigurationManager. L'exemple ci-dessous montre une configuration simple définissant le LCM en mode d'envoi.
Le processus d'application des paramètres au Configuration Manager local est similaire à l'application d'une configuration DSC. Vous devez créer une configuration LCM, la compiler dans un fichier MOF, puis l'appliquer au nœud. Contrairement aux configurations DSC, vous n'appliquez pas de configuration de gestionnaire de configuration locale en appelant la cmdlet StartDscConfiguration. Au lieu de cela, vous appelez DscLocalConfigurationManager en spécifiant le chemin d'accès au fichier MOF de configuration LCM en tant que paramètre. Après avoir appliqué la configuration LCM, vous pouvez afficher ses propriétés en appelant l'applet de commande Get-DscLocalConfigurationManager. Une configuration LCM peut contenir des blocs correspondant uniquement à un ensemble limité de ressources.
Vous pouvez spécifier des dépendances entre les nœuds à l'aide de ressources spéciales telles que WaitForXXX.
Paramètres de base LCM
Contrairement à la spécification des points de terminaison (chemins) et des configurations partielles du service d'extraction, toutes les propriétés du Configuration Manager local sont configurées dans un bloc Paramètres. Le gestionnaire de configuration local démarre le cycle ConfigurationModeFrequencyMins selon les critères suivants:
• une nouvelle métaconfiguration est appliquée à l'aide de Set-DscLocalConfigurationManager
• l'ordinateur est redémarré Pour toute condition où le processus de la minuterie se bloque, le problème est détecté dans les 30 secondes et le cycle est redémarré. Un fonctionnement simultané peut retarder le début du cycle. Si la durée de cette opération dépasse la fréquence du cycle configuré, le temporisateur suivant ne démarre pas.
Alors que Microsoft a encore du travail à faire, DSC se pose clairement comme un concurrent de Red Hat & # 39; s Ansible.
Prérequis PowerShell DSC
Même s'il est disponible depuis la version 4, DSC est nettement plus performant en version 5 ou supérieure. Si vous devez mettre à jour votre version de PowerShell, vous devrez télécharger Windows Management Framework (WMF). Le WMF contient des mises à jour pour les éléments suivants:
• Windows PowerShell,
• Configuration de l'état souhaité de Windows PowerShell (DSC),
• Gestion à distance de Windows (WinRM),
• WMI (Windows Management Instrumentation)
Vous pouvez installer WMF 5.1 sur Windows Server 2008 R2 SP1 ou supérieur et sur Windows 7 SP1 sur Windows 10 pour la partie client. En plus de WMF, vous devrez peut-être mettre à jour votre version de .Net. Côté réseau, vous devrez également autoriser la gestion à distance de vos nœuds via WinRM (Windows Remote Management), le protocole de communication à distance de Powershell (Microsoft SSH). Les programmes de configuration et les commandes pour ce faire sont, comme vous le souhaitez, le programme winrm externe avec l'option quickconfig (winrm quickconfig dans un cmd ou une console powershell) et les commandes Enable-PSRemoting ou Set-WSManQuickConfig. PowerShell DSC est basé sur le CIM (Common Information Model) implémenté via WMI (Windows Management).
Service d'extraction
La configuration LCM vous permet de définir les types de services d'extraction suivants:
• Serveur de configuration: un référentiel pour les configurations DSC. Les serveurs de configuration sont définis à l'aide des blocs ConfigurationRepositoryWeb pour les serveurs Web et ConfigurationRepositoryShare (pour les serveurs SMB).
• Serveur de ressources: il s'agit du référentiel des ressources DSC, conditionné sous forme de modules PowerShell. Les serveurs de ressources sont définis à l'aide des blocs ResourceRepositoryWeb pour les serveurs Web et des blocs ResourceRepositoryShare pour les serveurs SMB.
• Serveur de rapports: c'est le service auquel DSC envoie les données de rapport. Les serveurs de rapports sont définis à l'aide de blocs ReportServerWeb. Un serveur de rapports doit être un service Web.
Utilisation de configurations locales
DSC pour Linux fournit des scripts, écrits en Python et non Powershell, pour une interprétation plus facile, qui peuvent être utilisés avec une configuration de l'ordinateur Linux local. Ces scripts se trouvent dans le répertoire / opt / microsoft / dsc / Scripts et contiennent les éléments suivants:
• GetDscConfiguration.py qui renvoie la configuration actuellement appliquée à l'ordinateur, tout comme la cmdlet PowerShell Get-DscConfiguration.
• GetDscLocalConfigurationManager.py renvoie la métaconfiguration actuellement appliquée à l'ordinateur. Son cousin Powershell est la commande Get-DscLocalConfigurationManager.
• InstallModule.py installe un module de ressources DSC personnalisé. Doit spécifier le chemin d'un fichier .zip contenant la bibliothèque d'objets partagée et les fichiers MOF du schéma de module.
• RemoveModule.py vous permet de supprimer un module de ressources DSC personnalisé.
• StartDscLocalConfigurationManager.py applique un fichier de configuration MOF à l'ordinateur. Il est similaire à sa cmdlet Powershell presque homonyme Start-DscLocalConfiguration.
• SetDscLocalConfigurationManager.py applique un fichier MOF de métaconfiguration à l'ordinateur.
Commentaires
Laisser un commentaire