Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

PowerShell Desired State Configuration (DSC) semplifica notevolmente il lavoro di distribuzione e configurazione del sistema operativo, dei ruoli del server e delle applicazioni quando si hanno centinaia di server.

Ma quando si utilizza DSC in locale, ad es. non in MS Azure, ci sono un paio di sfumature. Si notano soprattutto se l’organizzazione è grande (da 300 postazioni di lavoro e server) e non ha ancora scoperto il mondo dei container:

  • Non esistono rapporti completi sullo stato dei sistemi. Se la configurazione richiesta non è stata applicata su alcuni server, senza questi rapporti non lo sapremo. È piuttosto difficile ottenere informazioni dal server di reporting integrato e, per un numero elevato di host, ciò può richiedere anche molto tempo.
  • Manca di scalabilità e tolleranza agli errori. È impossibile costruire una farm di server Web pull DSC che disponga di un unico database tollerante agli errori e di un archivio comune di file MOF per configurazioni, moduli e chiavi di registrazione.

Oggi ti dirò come risolvere il primo problema e ottenere dati per la reportistica. Tutto sarebbe più semplice se SQL potesse essere utilizzato come database. SM promesse supporto integrato solo in Windows Server 2019 o nella build Windows Server 1803. Recupera i dati anche utilizzando il provider OleDB non funzionaperché DSC Server utilizza un parametro denominato che non è completamente supportato da OleDbCommand.

Ho trovato questo metodo: per chi utilizza Windows Server 2012 e 2016, è possibile настроить utilizzando un database SQL come backend per il server di query DSC. Per fare ciò, creeremo un "proxy" sotto forma di file .mdb con tabelle associate, che reindirizzerà i dati ricevuti dai report dei clienti al database del server SQL.

Nota: per Windows Server 2016 è necessario utilizzare AccessDatabaseEngine2016x86perché Microsoft.Jet.OLEDB.4.0 non è più supportato.

Non entrerò nei dettagli sul processo di distribuzione di un server pull DSC, è descritto molto bene qui. Noterò solo un paio di punti. Se distribuiamo il puller DSC sullo stesso server Web con WSUS o Kaspersky Security Center, nello script di creazione della configurazione dobbiamo modificare i seguenti parametri:

  1. UseSecurityBestPractices     = $false

    In caso contrario, TLS 1.0 verrà disabilitato e non sarà possibile connettersi al database SQL. Anche Kaspersky Security Center non funzionerà (il problema dovrebbe essere risolto in Kaspersky Security Center v11).

  2. Enable32BitAppOnWin64   = $true

    Se non apporti questa modifica, non sarai in grado di eseguire il server AppPool DSC su IIS con WSUS.

  3. Quando si installa DSC Server con WSUS, disabilitare la memorizzazione nella cache statica e dinamica per il sito DSC.

Passiamo alla configurazione del server DSC per utilizzare il database SQL.

Creazione di un database SQL

  1. Creiamo un database SQL vuoto denominato DSC.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  2. Creiamo un account per connetterci a questo database. Innanzitutto, controlla che il server SQL consenta l'autenticazione sia degli account Windows che SQL.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  3. Vai alla sezione Mappatura utenti. Seleziona il database, in questo caso DSC. Diamo i diritti del proprietario del database.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  4. Fatto.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

Creazione di uno schema per il database DSC

Esistono due modi per creare uno schema per un database DSC:

  • in modo indipendente, attraverso uno 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
  • importare dati da devices.mdb vuoto come parte del modulo PS PSDesiredStateConfiguration tramite l'importazione guidata dati SQL.

    Il file Devices.mdb con cui lavoreremo si trova in C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. Per importare dati, eseguire l'Importazione/Esportazione guidata di SQL Server.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  2. Scegliamo da dove prenderemo i dati: nel nostro caso si tratta di un database Microsoft Access. Fare clic su Avanti.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  3. Seleziona il file da cui importiamo il diagramma.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  4. Indichiamo dove importare: per noi è un database SQL.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  5. Selezionare il server SQL (Nome Server) e il database in cui importeremo i dati (DataBase).

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  6. Seleziona l'opzione Copia dati da una o più tabelle o viste (copia dei dati da tabelle o viste).

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  7. Selezioniamo le tabelle da cui importeremo lo schema del database.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  8. Seleziona la casella di controllo Esegui immediatamente e fai clic su Fine.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  9. Fatto.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  10. Di conseguenza, le tabelle dovrebbero essere visualizzate nel database DSC.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

Impostazione di un file "proxy" .mdb

Creazione di una connessione ODBC a un server SQL. Si presuppone che MS Access non sia installato sul server che esegue DSC, quindi la configurazione di databases.mdb viene eseguita su un host intermedio con MS Access installato.

Creiamo una connessione ODBC di sistema al server SQL (il bit di connessione deve corrispondere al bit di MS Access: 64 o 32). Può essere creato utilizzando:
-Cmdlet 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

— oppure manualmente, utilizzando la procedura guidata di connessione:

  1. Apri Strumenti di amministrazione. Selezioniamo origini dati ODBC a seconda della versione di MS Access installata. Vai alla scheda DSN di sistema e crea una connessione di sistema (Aggiungi).

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  2. Indichiamo che ci collegheremo al server SQL. Fare clic su Fine.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  3. Specificare il nome e il server a cui connettersi. Successivamente sarà necessario creare una connessione con gli stessi parametri sul server DSC.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  4. Indichiamo che per connetterci al server SQL, utilizziamo un login creato in precedenza con il nome DSC.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  5. Specifichiamo il database nelle impostazioni di connessione DSC.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  6. Fare clic su Fine.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  7. Prima di completare la configurazione, controlliamo che la connessione funzioni (Test Data Source).

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  8. Fatto.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

Creazione di un database devices.mdb in MS Access. Avvia MS Access e crea un database vuoto chiamato devices.mdb.

Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  1. Vai alla scheda Dati esterni e fai clic su Database ODBC. Nella finestra visualizzata, seleziona Crea una tabella collegata per connetterti all'origine dati.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  2. Nella nuova finestra, seleziona la scheda Origine dati macchina e fai clic su OK. Nella nuova finestra, inserisci le credenziali per connetterti al server SQL.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  3. Seleziona le tabelle che devono essere collegate. Seleziona la casella Salva password e fai clic su OK. Salva la password ogni volta per tutte e tre le tabelle.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  4. Negli indici è necessario selezionare quanto segue:
    — TargetName per la tabella dbo_Devices;

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

    — NodeName o IPAddress per dbo_RegistrationData;

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

    — NodeName o IPAddress per dbo_StatusReport.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  5. Rinominiamo le tabelle in MS Access, vale a dire: rimuoviamo il prefisso dbo_ in modo che DSC possa utilizzarle.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  6. Fatto.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  7. Salvare il file e chiudere MS Access. Ora copiamo il file devices.mdb risultante sul server DSC (per impostazione predefinita in C: Program FilesWindowsPowershellDSCService) e sostituiamo quello esistente con esso (se esiste).

Configurazione del server DSC per utilizzare SQL

  1. Torniamo al server DSC. Per connetterci al server SQL con il nostro file proxy, creiamo una nuova connessione ODBC sul server DSC. Il nome, la profondità di bit e le impostazioni di connessione devono essere le stesse di quando si crea il file MDB. Puoi copiare il devices.mdb vuoto già configurato da qui.
  2. Per utilizzare devices.mdb, è necessario apportare modifiche al web.config del server di pull DSC (l'impostazione predefinita è C:inetpubPSDSCPullServerweb.config):

-per WindowsServer2012

<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">

-per WindowsServer2016

<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">

Ciò completa la configurazione del server DSC.

Controllo della funzionalità del server DSC

  1. Verifichiamo che il server DSC sia accessibile tramite un browser web.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  2. Ora controlliamo se il server di pull DSC funziona correttamente. A tale scopo, il modulo xPSDesiredStateConfiguration include lo script pullserversetuptests.ps1. Prima di eseguire questo script, è necessario installare un modulo Powershell denominato Pester. Installalo Install-Module -Name Pester.
  3. Aprire C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<versione del modulo>DSCPullServerSetupPullServerDeploymentVerificationTest (nella versione di esempio 8.0.0.0.0).

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  4. Apri PullServerSetupTests.ps1 e controlla il percorso del web.config del server DSC. Il percorso di web.config, che controllerà lo script, è evidenziato in rosso. Se necessario, cambiamo questo percorso.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  5. Esegui pullserversetuptests.ps1
    Invoke-Pester.PullServerSetupTests.ps1
    Tutto funziona

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

  6. In SQL Management Studio vediamo che gli host amministrati inviano report al server di reporting DSC e i dati finiscono nel database DSC sul server SQL.

    Configurazione e file dello stato desiderato di PowerShell: parte 1. Configurazione del server di pull DSC per funzionare con un database SQL

È tutto. Nei seguenti articoli ho intenzione di spiegarti come costruire report sui dati ottenuti e toccherò questioni relative alla tolleranza agli errori e alla scalabilità.

Fonte: habr.com

Aggiungi un commento