PowerShell Desired State Configuration (DSC) simplifie considérablement le travail de déploiement et de configuration du système d'exploitation, des rôles de serveur et des applications lorsque vous disposez de centaines de serveurs.
Mais lorsque vous utilisez DSC sur site, c'est-à-dire pas dans MS Azure, il y a quelques nuances. Ils sont particulièrement visibles si l'organisation est de grande taille (à partir de 300 postes de travail et serveurs) et n'a pas encore découvert le monde des conteneurs :
- Il n'existe pas de rapports complets sur l'état des systèmes. Si la configuration requise n'a pas été appliquée sur certains serveurs, nous n'en saurons rien sans ces rapports. Il est assez difficile d'obtenir des informations à partir du serveur de reporting intégré, et pour un grand nombre d'hôtes, cela peut également prendre beaucoup de temps.
- Manque d’évolutivité et de tolérance aux pannes. Il est impossible de créer une ferme de serveurs Web pull DSC qui disposeraient d'une seule base de données tolérante aux pannes et d'un stockage commun de fichiers mof pour les configurations, les modules et les clés d'enregistrement.
Aujourd'hui, je vais vous expliquer comment résoudre le premier problème et obtenir des données à des fins de reporting. Tout serait plus simple si SQL pouvait être utilisé comme base de données. MS
J'ai trouvé cette méthode : pour ceux qui utilisent Windows Server 2012 et 2016, vous pouvez
Remarque : Pour Windows Server 2016, vous devez utiliser
Je n'entrerai pas dans le détail du processus de déploiement d'un serveur pull DSC, il est très bien décrit
-
UseSecurityBestPractices = $false
Sinon, TLS 1.0 sera désactivé et vous ne pourrez pas vous connecter à la base de données SQL. Kaspersky Security Center ne fonctionnera pas non plus (le problème devrait être résolu dans Kaspersky Security Center v11).
-
Enable32BitAppOnWin64 = $true
Si vous n'effectuez pas cette modification, vous ne pourrez pas exécuter le serveur AppPool DSC sur IIS avec WSUS.
- Lors de l'installation du serveur DSC avec WSUS, désactivez la mise en cache statique et dynamique pour le site DSC.
Passons à la configuration du serveur DSC pour utiliser la base de données SQL.
Création d'une base de données SQL
- Créons une base de données SQL vide nommée DSC.
- Créons un compte pour nous connecter à cette base de données. Tout d'abord, vérifiez que le serveur SQL autorise l'authentification des comptes Windows et SQL.
- Accédez à la section Mappage des utilisateurs. Sélectionnez la base de données, dans ce cas DSC. Nous accordons les droits du propriétaire de la base de données.
- Terminé.
Création d'un schéma pour la base de données DSC
Il existe deux manières de créer un schéma pour une base de données DSC :
- de manière indépendante, via un script TSQL
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Devices]( [TargetName] [nvarchar](255) NOT NULL, [ConfigurationID] [nvarchar](255) NOT NULL, [ServerCheckSum] [nvarchar](255) NOT NULL, [TargetCheckSum] [nvarchar](255) NOT NULL, [NodeCompliant] [bit] NOT NULL, [LastComplianceTime] [datetime] NULL, [LastHeartbeatTime] [datetime] NULL, [Dirty] [bit] NOT NULL, [StatusCode] [int] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[RegistrationData]( [AgentId] [nvarchar](255) NOT NULL, [LCMVersion] [nvarchar](255) NULL, [NodeName] [nvarchar](255) NULL, [IPAddress] [nvarchar](255) NULL, [ConfigurationNames] [nvarchar](max) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[StatusReport]( [JobId] [nvarchar](50) NOT NULL, [Id] [nvarchar](50) NOT NULL, [OperationType] [nvarchar](255) NULL, [RefreshMode] [nvarchar](255) NULL, [Status] [nvarchar](255) NULL, [LCMVersion] [nvarchar](50) NULL, [ReportFormatVersion] [nvarchar](255) NULL, [ConfigurationVersion] [nvarchar](255) NULL, [NodeName] [nvarchar](255) NULL, [IPAddress] [nvarchar](255) NULL, [StartTime] [datetime] NULL, [EndTime] [datetime] NULL, [Errors] [nvarchar](max) NULL, [StatusData] [nvarchar](max) NULL, [RebootRequested] [nvarchar](255) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
- importez des données à partir de devices.mdb vide dans le cadre du module PS PSDesiredStateConfiguration via l'assistant d'importation de données SQL.
Le Devices.mdb avec lequel nous allons travailler se trouve dans C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- Pour importer des données, exécutez l'Assistant d'importation et d'exportation SQL Server.
- Nous choisissons d'où nous obtiendrons les données - dans notre cas, il s'agit d'une base de données Microsoft Access. Cliquez sur Suivant.
- Sélectionnez le fichier à partir duquel nous importons le diagramme.
- Nous indiquons où importer - pour nous, c'est une base de données SQL.
- Sélectionnez le serveur SQL (Server Name) et la base de données dans laquelle nous importerons les données (DataBase).
- Sélectionnez l'option Copier les données d'une ou plusieurs tables ou vues (copie de données à partir de tables ou de vues).
- Nous sélectionnons les tables à partir desquelles nous importerons le schéma de la base de données.
- Cochez la case Exécuter immédiatement et cliquez sur Terminer.
- Terminé.
- En conséquence, les tableaux devraient apparaître dans la base de données DSC.
Configuration d'un fichier « proxy » .mdb
Création d'une connexion ODBC à un serveur SQL. On suppose que MS Access n'est pas installé sur le serveur exécutant DSC, la configuration de databases.mdb est donc effectuée sur un hôte intermédiaire sur lequel MS Access est installé.
Créons une connexion système ODBC au serveur SQL (le nombre de bits de connexion doit correspondre au nombre de bits MS Access - 64 ou 32). Il peut être créé à l'aide de :
- Applet de commande Powershell :
Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '<64-bit or 32-bit>' –DsnType System –SetPropertyValue @('Description=DSC Pull Server',"Server=<Name of your SQL Server>",'Trusted_Connection=yes','Database=DSC') –PassThru
— soit manuellement, à l'aide de l'assistant de connexion :
- Ouvrez les outils d'administration. Nous sélectionnons les sources de données ODBC en fonction de la version de MS Access installée. Accédez à l’onglet System DSN et créez une connexion système (Ajouter).
- Nous indiquons que nous allons nous connecter au serveur SQL. Cliquez sur Terminer.
- Spécifiez le nom et le serveur auquel vous connecter. Ensuite, une connexion avec les mêmes paramètres devra être créée sur le serveur DSC.
- Nous indiquons que pour nous connecter au serveur SQL, nous utilisons un login préalablement créé avec le nom DSC.
- Nous précisons la base de données dans les paramètres de connexion DSC.
- Cliquez sur Terminer.
- Avant de terminer la configuration, nous vérifions que la connexion fonctionne (Test Data Source).
- Terminé.
Création d'une base de données devices.mdb dans MS Access. Lancez MS Access et créez une base de données vide appelée devices.mdb.
- Accédez à l'onglet Données externes et cliquez sur Base de données ODBC. Dans la fenêtre qui apparaît, sélectionnez Créer une table liée pour vous connecter à la source de données.
- Dans la nouvelle fenêtre, sélectionnez l'onglet Source de données machine et cliquez sur OK. Dans la nouvelle fenêtre, saisissez les informations d'identification pour vous connecter au serveur SQL.
- Sélectionnez les tables qui doivent être liées. Cochez la case Enregistrer le mot de passe et cliquez sur OK. Enregistrez le mot de passe à chaque fois pour les trois tables.
- Dans les index, vous devez sélectionner les éléments suivants :
— TargetName pour la table dbo_Devices ;
— NodeName ou IPAddress pour dbo_RegistrationData ;
— NodeName ou IPAddress pour dbo_StatusReport. - Renommons les tables dans MS Access, à savoir : supprimons le préfixe dbo_ pour que DSC puisse les utiliser.
- Terminé.
- Enregistrez le fichier et fermez MS Access. Maintenant, nous copions le devices.mdb résultant sur le serveur DSC (par défaut dans C: Program FilesWindowsPowershellDSCService) et remplaçons celui existant par celui-ci (s'il existe).
Configuration du serveur DSC pour utiliser SQL
- Nous revenons au serveur DSC. Pour nous connecter au serveur SQL avec notre fichier proxy, créons une nouvelle connexion ODBC sur le serveur DSC. Le nom, la profondeur de bits et les paramètres de connexion doivent être les mêmes que lors de la création du fichier MDB. Vous pouvez copier le devices.mdb vide déjà configuré à partir d'ici.
- Pour utiliser devices.mdb, vous devez apporter des modifications au web.config du serveur pull DSC (la valeur par défaut est C:inetpubPSDSCPullServerweb.config) :
- pour Windows Serveur 2012
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">
- pour Windows Serveur 2016
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">
Ceci termine la configuration du serveur DSC.
Vérification de la fonctionnalité du serveur DSC
- Vérifions que le serveur DSC est accessible via un navigateur web.
- Vérifions maintenant si le serveur pull DSC fonctionne correctement. Pour ce faire, le module xPSDesiredStateConfiguration inclut le script pullserversetuptests.ps1. Avant d'exécuter ce script, vous devez installer un module Powershell nommé Pester. Installez-le Install-Module -Name Pester.
- Ouvrez C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<version du module>DSCPullServerSetupPullServerDeploymentVerificationTest (dans l'exemple de version 8.0.0.0.0).
- Ouvrez PullServerSetupTests.ps1 et vérifiez le chemin d'accès au web.config du serveur DSC. Le chemin vers web.config, qui vérifiera le script, est surligné en rouge. Si nécessaire, nous modifions ce chemin.
- Exécutez pullserversetuptests.ps1
Invoke-Pester.PullServerSetupTests.ps1
Все работает. - Dans SQL Management Studio, nous voyons que les hôtes administrés envoient des rapports au serveur de reporting DSC et que les données se retrouvent dans la base de données DSC sur le serveur SQL.
C'est tout. Dans les articles suivants, je prévois de vous expliquer comment créer des rapports sur les données obtenues et j'aborderai les problèmes de tolérance aux pannes et d'évolutivité.
Source: habr.com