PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

La Configuration d'État dĂ©sirĂ© PowerShell (DSC) simplifie considĂ©rablement le dĂ©ploiement et la configuration du systĂšme d'exploitation, des rĂŽles de serveur et des applications, surtout lorsque vous avez des centaines de serveurs.

Mais en utilisant DSC sur site, c'est-à-dire pas dans MS Azure, quelques subtilités apparaissent. Elles sont particuliÚrement perceptibles si l'organisation est grande (à partir de 300 stations de travail et serveurs) et si elle n'a pas encore ouvert le monde des conteneurs :

  • Il n'y a pas de rapports complets sur l'Ă©tat des systĂšmes. Si la configuration souhaitĂ©e n'a pas Ă©tĂ© appliquĂ©e Ă  certains serveurs, nous n'en saurons rien sans ces rapports. Obtenir des informations Ă  partir du serveur de rapports intĂ©grĂ© est assez difficile, et pour un grand nombre d'hĂŽtes, cela prend encore plus de temps.
  • Il manque l'Ă©volutivitĂ© et la tolĂ©rance aux pannes. Il n'est pas possible de construire un parc de serveurs web DSC interrogeant qui possĂ©deraient une unique base de donnĂ©es tolĂ©rante aux pannes et un stockage commun des fichiers mof de configurations, modules et clĂ©s de registre.

Aujourd'hui, je vais vous parler de comment résoudre le premier problÚme et obtenir des données pour établir des rapports. Ce serait plus simple si l'on pouvait utiliser SQL comme base de données. MS promet n'offre un support intégré que sur Windows Server 2019 ou dans la build Windows Server 1803. Il n'est pas non plus possible de récupérer des données en utilisant OleDB provider ce qui n'est pas faisable, car le serveur DSC utilise un paramÚtre nommé qui n'est pas entiÚrement pris en charge par OleDbCommand.

J'ai trouvé une méthode : ceux qui utilisent Windows Server 2012 et 2016 peuvent configurer utiliser une base de données SQL comme backend pour le serveur DSC interrogeant. Pour cela, nous allons créer un « proxy » sous la forme d'un fichier .mdb avec des tables liées, qui redirigera les données obtenues des rapports clients vers la base de données du serveur SQL.

Remarque : pour Windows Server 2016, il est nécessaire d'utiliser AccessDatabaseEngine2016x86, car Microsoft.Jet.OLEDB.4.0 n'est plus pris en charge.

Je ne vais pas m'attarder sur le processus de dĂ©ploiement du serveur DSC interrogeant, qui est trĂšs bien dĂ©crit ici. Je soulignerai seulement quelques points. Si nous dĂ©ployons le serveur DSC interrogeant sur un mĂȘme serveur web que WSUS ou Kaspersky Security Center, il est nĂ©cessaire de changer les paramĂštres suivants dans le script de crĂ©ation de configuration :

  1. UseSecurityBestPractices     = $false

    Sinon, TLS 1.0 sera dĂ©sactivĂ©, vous ne pourrez pas vous connecter Ă  la base de donnĂ©es SQL. Kaspersky Security Center ne fonctionnera Ă©galement pas (le problĂšme doit ĂȘtre rĂ©solu dans Kaspersky Security Center v11).

  2. Enable32BitAppOnWin64   = $true

    Si ce changement n'est pas effectué, il ne sera pas possible de lancer l'AppPool du serveur DSC sur IIS avec WSUS.

  3. Lors de l'installation du serveur DSC avec WSUS, désactivez le cache statique et dynamique pour le site DSC.

Passons à la configuration du serveur DSC pour utiliser la base de données SQL.

Création de la base de données SQL

  1. Nous allons créer une base de données SQL vide nommée DSC.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  2. Créons un compte pour nous connecter à cette base de données. Vérifiez au préalable que l'authentification des comptes soit autorisée sur le serveur SQL, aussi bien pour Windows que pour SQL.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  3. Accédez à la section User Mapping. Sélectionnez la base de données, ici - DSC. Accordez les droits de propriétaire de la base de données.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  4. C'est fait.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

Création du schéma pour la base de données DSC

Le schĂ©ma de la base de donnĂ©es DSC peut ĂȘtre créé de deux maniĂšres :

  • soit manuellement, 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
  • importer des donnĂ©es du fichier vide devices.mdb via le module PS PSDesiredStateConfiguration Ă  l'aide de l'Assistant d'importation de donnĂ©es SQL.

    Le fichier Devices.mdb avec lequel nous allons travailler se trouve dans C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. Pour importer les données, lancez l'Assistant d'importation et d'exportation SQL Server.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  2. SĂ©lectionnez la source des donnĂ©es – dans notre cas, il s'agit de la base de donnĂ©es Microsoft Access. Cliquez sur Suivant.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  3. Sélectionnez le fichier à partir duquel nous allons importer le schéma.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  4. Indiquez oĂč importer – ici, c'est la base de donnĂ©es SQL.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  5. Choisissez le serveur SQL (Server Name) et la base de données dans laquelle nous allons importer les données (DataBase).

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  6. Sélectionnez l'option Copier les données d'une ou plusieurs tables ou vues (copier les données à partir de tables ou de vues).

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  7. SĂ©lectionnez les tables d'oĂč nous allons importer le schĂ©ma de la base de donnĂ©es.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

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

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  9. C'est fait.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  10. En conséquence, les tables doivent apparaßtre dans la base de données DSC.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

Configuration du fichier .mdb «proxy»

Création d'une connexion ODBC au serveur SQL. On suppose que MS Access n'est pas installé sur le serveur avec DSC, donc la configuration databases.mdb est réalisée sur un hÎte intermédiaire avec MS Access installé.

CrĂ©ons une connexion ODBC systĂšme au serveur SQL (l'architecture de la connexion doit correspondre Ă  l'architecture de MS Access – 64 ou 32 bits). Elle peut ĂȘtre créée Ă  l'aide de :
— la commande Powershell :

Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '' –DsnType System –SetPropertyValue @('Description=Serveur de rĂ©cupĂ©ration DSC', "Server=", 'Trusted_Connection=yes', 'Database=DSC') –PassThru

— ou manuellement, via l'assistant de connexion :

  1. Ouvrons Outils d'administration. Sélectionnons les sources de données ODBC selon la version installée de MS Access. Passons à l'onglet DSN systÚme et créons une connexion systÚme (Ajouter).

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  2. Indiquons que nous allons nous connecter au serveur SQL. Cliquons sur Terminer.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  3. Indiquons le nom et le serveur pour la connexion. Ensuite, une connexion avec les mĂȘmes paramĂštres devra ĂȘtre créée sur le serveur DSC.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  4. Indiquons que pour se connecter au serveur SQL, nous utilisons le login que nous avons préalablement créé avec le nom DSC.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  5. Indiquons la base de données dans les paramÚtres de connexion DSC.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  6. Cliquons sur Terminer.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  7. Avant de terminer la configuration, vérifions que la connexion fonctionne (Tester la source de données).

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  8. C'est fait.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

Création de la base de données devices.mdb dans MS Access. Lançons MS Access et créons une base de données vide nommée devices.mdb.

PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  1. Passons Ă  l'onglet DonnĂ©es externes, cliquons sur Base de donnĂ©es ODBC. Dans la fenĂȘtre qui apparaĂźt, choisissons CrĂ©er une table liĂ©e pour se connecter Ă  la source de donnĂ©es.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  2. Dans la nouvelle fenĂȘtre, choisissons l'onglet Machine Data Source et cliquons sur OK. Dans la nouvelle fenĂȘtre, saisissons les informations d'identification pour se connecter au serveur SQL.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  3. SĂ©lectionnons les tables Ă  lier. Cochons la case Enregistrer le mot de passe et cliquons sur OK. Le mot de passe doit ĂȘtre enregistrĂ© chaque fois pour les trois tables.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  4. Dans les index, il faut choisir les suivants :
    — TargetName pour la table dbo_Devices;

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

    — NodeName ou IPAddress pour dbo_RegistrationData;

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

    — NodeName ou IPAddress pour dbo_StatusReport.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

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

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  6. C'est fait.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  7. Enregistrons le fichier et fermons MS Access. Maintenant, copions le devices.mdb obtenu sur le serveur DSC (par défaut dans C:Program FilesWindowsPowershellDSCService) et le remplaçons par l'existant (s'il y en a un).

Configuration du serveur DSC pour utiliser SQL

  1. Retour au serveur DSC. Pour se connecter Ă  SQL Server avec notre fichier proxy, nous allons crĂ©er une nouvelle connexion ODBC sur le serveur DSC. Le nom, l'architecture et les paramĂštres de connexion doivent ĂȘtre les mĂȘmes que lors de la crĂ©ation du fichier MDB. Vous pouvez copier le fichier devices.mdb vide dĂ©jĂ  configurĂ© d'ici.
  2. Pour utiliser devices.mdb, il est nécessaire de modifier le fichier web.config du serveur DSC en mode interrogateur (par défaut - C:inetpubPSDSCPullServerweb.config) :

— pour Windows Server 2012

— pour Windows Server 2016

Avec cela, la configuration du serveur DSC est terminée.

Vérification du bon fonctionnement du serveur DSC

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

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  2. VĂ©rifions maintenant si le serveur interrogateur DSC fonctionne correctement. Pour cela, le module xPSDesiredStateConfiguration contient le script pullserversetuptests.ps1. Avant d'exĂ©cuter ce script, il est nĂ©cessaire d'installer le module PowerShell nommĂ© Pester. Nous l’installons avec Install-Module -Name Pester.
  3. Ouvrons C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfigurationDSCPullServerSetupPullServerDeploymentVerificationTest (dans l'exemple, la version est 8.0.0.0.0).

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  4. Ouvrons PullServerSetupTests.ps1 et vérifions le chemin vers le fichier web.config du serveur DSC. Le chemin vers le fichier web.config que le script va vérifier est surligné en rouge. Si nécessaire, modifions ce chemin.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  5. Exécutons pullserversetuptests.ps1
    Invoke-Pester .PullServerSetupTests.ps1
    Tout fonctionne.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

  6. Dans SQL Management Studio, nous voyons que les hÎtes gérés envoient des rapports au serveur de rapports DSC et que les données vont dans la base de données DSC sur le serveur SQL.

    PowerShell Desired State Configuration et un fichier brut : partie 1. Configuration du serveur Pull DSC pour travailler avec une base de données SQL

C'est tout. Dans les prochains articles, je prévois de parler de la création de rapports à partir des données obtenues et d'aborder les questions de haute disponibilité et d'évolutivité.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster