Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

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 promesses prise en charge intégrée uniquement dans Windows Server 2019 ou dans la version Windows Server 1803. Récupérez également les données à l'aide du fournisseur OleDB fonctionne pascar DSC Server utilise un paramètre nommé qui n'est pas entièrement pris en charge par OleDbCommand.

J'ai trouvé cette méthode : pour ceux qui utilisent Windows Server 2012 et 2016, vous pouvez mettre en place en utilisant une base de données SQL comme backend pour le serveur de requêtes DSC. Pour ce faire, nous allons créer un « proxy » sous la forme d'un fichier .mdb avec les tables associées, qui redirigera les données reçues des rapports clients vers la base de données du serveur SQL.

Remarque : Pour Windows Server 2016, vous devez utiliser AccessDatabaseEngine2016x86car Microsoft.Jet.OLEDB.4.0 n'est plus pris en charge.

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 ici. Je noterai simplement quelques points. Si nous déployons l'extracteur DSC sur le même serveur Web avec WSUS ou Kaspersky Security Center, alors dans le script de création de configuration, nous devons modifier les paramètres suivants :

  1. 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).

  2. Enable32BitAppOnWin64   = $true

    Si vous n'effectuez pas cette modification, vous ne pourrez pas exécuter le serveur AppPool DSC sur IIS avec WSUS.

  3. 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

  1. Créons une base de données SQL vide nommée DSC.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  2. 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.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  3. 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.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  4. Terminé.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

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.

  1. Pour importer des données, exécutez l'Assistant d'importation et d'exportation SQL Server.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  2. 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.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  3. Sélectionnez le fichier à partir duquel nous importons le diagramme.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  4. Nous indiquons où importer - pour nous, c'est une base de données SQL.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  5. Sélectionnez le serveur SQL (Server Name) et la base de données dans laquelle nous importerons les données (DataBase).

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  6. 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).

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  7. Nous sélectionnons les tables à partir desquelles nous importerons le schéma de la base de données.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  8. Cochez la case Exécuter immédiatement et cliquez sur Terminer.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  9. Terminé.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  10. En conséquence, les tableaux devraient apparaître dans la base de données DSC.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

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 :

  1. 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).

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  2. Nous indiquons que nous allons nous connecter au serveur SQL. Cliquez sur Terminer.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  3. 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.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  4. Nous indiquons que pour nous connecter au serveur SQL, nous utilisons un login préalablement créé avec le nom DSC.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  5. Nous précisons la base de données dans les paramètres de connexion DSC.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  6. Cliquez sur Terminer.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  7. Avant de terminer la configuration, nous vérifions que la connexion fonctionne (Test Data Source).

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  8. Terminé.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

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.

Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  1. 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.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  2. 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.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  3. 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.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  4. Dans les index, vous devez sélectionner les éléments suivants :
    — TargetName pour la table dbo_Devices ;

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

    — NodeName ou IPAddress pour dbo_RegistrationData ;

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

    — NodeName ou IPAddress pour dbo_StatusReport.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  5. Renommons les tables dans MS Access, à savoir : supprimons le préfixe dbo_ pour que DSC puisse les utiliser.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  6. Terminé.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  7. 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

  1. 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.
  2. 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

  1. Vérifions que le serveur DSC est accessible via un navigateur web.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  2. 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.
  3. Ouvrez C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<version du module>DSCPullServerSetupPullServerDeploymentVerificationTest (dans l'exemple de version 8.0.0.0.0).

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  4. 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.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  5. Exécutez pullserversetuptests.ps1
    Invoke-Pester.PullServerSetupTests.ps1
    Все работает.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données SQL

  6. 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.

    Configuration et fichier de l'état souhaité PowerShell : partie 1. Configuration du serveur DSC Pull pour fonctionner avec une base de données 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

Ajouter un commentaire