Το PowerShell Desired State Configuration (DSC) απλοποιεί σημαντικά τη δουλειά ανάπτυξης και διαμόρφωσης του λειτουργικού συστήματος, των ρόλων διακομιστή και των εφαρμογών όταν έχετε εκατοντάδες διακομιστές.
Αλλά όταν χρησιμοποιείτε DSC εντός εγκατάστασης, π.χ. Όχι στο MS Azure, υπάρχουν μερικές αποχρώσεις. Είναι ιδιαίτερα αισθητά εάν ο οργανισμός είναι μεγάλος (από 300 σταθμούς εργασίας και διακομιστές) και δεν έχει ανακαλύψει ακόμη τον κόσμο των κοντέινερ:
- Δεν υπάρχουν πλήρεις αναφορές για την κατάσταση των συστημάτων. Εάν δεν έχει εφαρμοστεί η απαιτούμενη ρύθμιση παραμέτρων σε ορισμένους διακομιστές, τότε χωρίς αυτές τις αναφορές δεν θα το γνωρίζουμε. Είναι αρκετά δύσκολο να λάβετε πληροφορίες από τον ενσωματωμένο διακομιστή αναφορών και για μεγάλο αριθμό κεντρικών υπολογιστών μπορεί επίσης να χρειαστεί πολύς χρόνος.
- Δεν έχει επεκτασιμότητα και ανοχή σφαλμάτων. Είναι αδύνατο να δημιουργηθεί μια φάρμα διακομιστών ιστού DSC pull που θα έχουν μια ενιαία βάση δεδομένων με ανοχή σε σφάλματα και μια κοινή αποθήκευση αρχείων mof για διαμορφώσεις, λειτουργικές μονάδες και κλειδιά εγγραφής.
Σήμερα θα σας πω πώς μπορείτε να λύσετε το πρώτο πρόβλημα και να λάβετε δεδομένα για αναφορά. Όλα θα ήταν πιο απλά εάν η SQL μπορούσε να χρησιμοποιηθεί ως βάση δεδομένων. Κυρία
Βρήκα αυτήν τη μέθοδο: για όσους χρησιμοποιούν Windows Server 2012 και 2016, μπορείτε
Σημείωση: Για Windows Server 2016 πρέπει να χρησιμοποιήσετε
Δεν θα μπω σε λεπτομέρειες σχετικά με τη διαδικασία ανάπτυξης ενός διακομιστή έλξης DSC, περιγράφεται πολύ καλά
-
UseSecurityBestPractices = $false
Διαφορετικά, το TLS 1.0 θα απενεργοποιηθεί και δεν θα μπορείτε να συνδεθείτε στη βάση δεδομένων SQL. Το Kaspersky Security Center δεν θα λειτουργήσει επίσης (το πρόβλημα θα πρέπει να επιλυθεί στο Kaspersky Security Center v11).
-
Enable32BitAppOnWin64 = $true
Εάν δεν κάνετε αυτήν την αλλαγή, δεν θα μπορείτε να εκτελέσετε τον διακομιστή AppPool DSC σε υπηρεσίες IIS με WSUS.
- Κατά την εγκατάσταση του διακομιστή DSC με το WSUS, απενεργοποιήστε τη στατική και δυναμική προσωρινή αποθήκευση για την τοποθεσία DSC.
Ας προχωρήσουμε στη ρύθμιση του διακομιστή DSC για χρήση της βάσης δεδομένων SQL.
Δημιουργία βάσης δεδομένων SQL
- Ας δημιουργήσουμε μια κενή βάση δεδομένων SQL με το όνομα DSC.
- Ας δημιουργήσουμε έναν λογαριασμό για να συνδεθείτε σε αυτήν τη βάση δεδομένων. Αρχικά, ελέγξτε ότι ο διακομιστής SQL επιτρέπει τον έλεγχο ταυτότητας τόσο των λογαριασμών Windows όσο και των λογαριασμών SQL.
- Μεταβείτε στην ενότητα Χαρτογράφηση χρήστη. Επιλέξτε τη βάση δεδομένων, σε αυτήν την περίπτωση DSC. Δίνουμε τα δικαιώματα του κατόχου της βάσης δεδομένων.
- Τέλος.
Δημιουργία σχήματος για τη βάση δεδομένων DSC
Υπάρχουν δύο τρόποι για να δημιουργήσετε ένα σχήμα για μια βάση δεδομένων DSC:
- ανεξάρτητα, μέσω ενός σεναρίου 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
- εισαγωγή δεδομένων από κενές συσκευές.mdb ως μέρος της μονάδας PS PSDesiredStateConfiguration μέσω του SQL Data Import Wizard.
Το Devices.mdb με το οποίο θα εργαστούμε βρίσκεται στο C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- Για να εισαγάγετε δεδομένα, εκτελέστε τον Οδηγό εισαγωγής και εξαγωγής του SQL Server.
- Επιλέγουμε από πού θα λάβουμε τα δεδομένα - στην περίπτωσή μας πρόκειται για βάση δεδομένων της Microsoft Access. Κάντε κλικ στο Επόμενο.
- Επιλέξτε το αρχείο από το οποίο εισάγουμε το διάγραμμα.
- Υποδεικνύουμε πού να εισάγουμε - για εμάς είναι μια βάση δεδομένων SQL.
- Επιλέξτε τον διακομιστή SQL (Όνομα διακομιστή) και τη βάση δεδομένων στην οποία θα εισάγουμε δεδομένα (Βάση δεδομένων).
- Επιλέξτε Αντιγραφή δεδομένων από έναν ή περισσότερους πίνακες ή προβολές (αντιγραφή δεδομένων από πίνακες ή προβολές).
- Επιλέγουμε τους πίνακες από τους οποίους θα εισάγουμε το σχήμα της βάσης δεδομένων.
- Επιλέξτε το πλαίσιο ελέγχου Εκτέλεση Αμέσως και κάντε κλικ στο Τέλος.
- Τέλος.
- Ως αποτέλεσμα, οι πίνακες θα πρέπει να εμφανίζονται στη βάση δεδομένων DSC.
Ρύθμιση αρχείου "proxy" .mdb
Δημιουργία σύνδεσης ODBC σε διακομιστή SQL. Υποτίθεται ότι η MS Access δεν είναι εγκατεστημένη στον διακομιστή που εκτελεί το DSC, επομένως η ρύθμιση του databases.mdb γίνεται σε έναν ενδιάμεσο κεντρικό υπολογιστή με εγκατεστημένη την MS Access.
Ας δημιουργήσουμε μια σύνδεση ODBC συστήματος στον διακομιστή SQL (το bit σύνδεσης πρέπει να ταιριάζει με το bit MS Access - 64 ή 32). Μπορεί να δημιουργηθεί χρησιμοποιώντας:
- Powershell cmdlet:
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
— ή χειροκίνητα, χρησιμοποιώντας τον οδηγό σύνδεσης:
- Ανοίξτε τα εργαλεία διαχείρισης. Επιλέγουμε πηγές δεδομένων ODBC ανάλογα με την έκδοση του εγκατεστημένου MS Access. Μεταβείτε στην καρτέλα System DSN και δημιουργήστε μια σύνδεση συστήματος (Προσθήκη).
- Δηλώνουμε ότι θα συνδεθούμε στον διακομιστή SQL. Κάντε κλικ στο Τέλος.
- Καθορίστε το όνομα και τον διακομιστή στον οποίο θα συνδεθείτε. Στη συνέχεια, θα πρέπει να δημιουργηθεί μια σύνδεση με τις ίδιες παραμέτρους στον διακομιστή DSC.
- Υποδεικνύουμε ότι για να συνδεθούμε με τον διακομιστή SQL, χρησιμοποιούμε μια σύνδεση που δημιουργήθηκε προηγουμένως με το όνομα DSC.
- Καθορίζουμε τη βάση δεδομένων στις ρυθμίσεις σύνδεσης DSC.
- Κάντε κλικ στο Finish.
- Πριν ολοκληρώσουμε τη ρύθμιση, ελέγχουμε ότι η σύνδεση λειτουργεί (Test Data Source).
- Τέλος.
Δημιουργία βάσης δεδομένων devices.mdb στο MS Access. Εκκινήστε το MS Access και δημιουργήστε μια κενή βάση δεδομένων που ονομάζεται devices.mdb.
- Μεταβείτε στην καρτέλα Εξωτερικά δεδομένα και κάντε κλικ στη Βάση δεδομένων ODBC. Στο παράθυρο που εμφανίζεται, επιλέξτε Δημιουργία συνδεδεμένου πίνακα για να συνδεθείτε με την πηγή δεδομένων.
- Στο νέο παράθυρο, επιλέξτε την καρτέλα Προέλευση δεδομένων μηχανήματος και κάντε κλικ στο OK. Στο νέο παράθυρο, εισαγάγετε τα διαπιστευτήρια για να συνδεθείτε στον διακομιστή SQL.
- Επιλέξτε τους πίνακες που πρέπει να συνδεθούν. Επιλέξτε το πλαίσιο Αποθήκευση κωδικού πρόσβασης και κάντε κλικ στο OK. Αποθηκεύστε τον κωδικό πρόσβασης κάθε φορά και για τους τρεις πίνακες.
- Στα ευρετήρια πρέπει να επιλέξετε τα εξής:
— TargetName για τον πίνακα dbo_Devices.
— NodeName ή διεύθυνση IP για dbo_RegistrationData.
— NodeName ή διεύθυνση IP για dbo_StatusReport. - Ας μετονομάσουμε τους πίνακες στο MS Access, δηλαδή: αφαιρέστε το πρόθεμα dbo_ για να μπορεί να τους χρησιμοποιήσει το DSC.
- Τέλος.
- Αποθηκεύστε το αρχείο και κλείστε το MS Access. Τώρα αντιγράφουμε το devices.mdb που προκύπτει στον διακομιστή DSC (από προεπιλογή στο C: Program FilesWindowsPowershellDSCService) και αντικαθιστούμε το υπάρχον με αυτόν (αν υπάρχει).
Διαμόρφωση διακομιστή DSC για χρήση SQL
- Επιστρέφουμε στον διακομιστή DSC. Για να συνδεθείτε στον διακομιστή SQL με το αρχείο μας μεσολάβησης, ας δημιουργήσουμε μια νέα σύνδεση ODBC στον διακομιστή DSC. Το όνομα, το βάθος bit και οι ρυθμίσεις σύνδεσης πρέπει να είναι ίδιες με αυτές κατά τη δημιουργία του αρχείου MDB. Μπορείτε να αντιγράψετε τις ήδη διαμορφωμένες κενές συσκευές.mdb από εδώ.
- Για να χρησιμοποιήσετε το devices.mdb, πρέπει να κάνετε αλλαγές στο web.config του διακομιστή έλξης DSC (η προεπιλογή είναι C:inetpubPSDSCPullServerweb.config):
- για Windows Server 2012
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">
- για Windows Server 2016
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">
Αυτό ολοκληρώνει τη ρύθμιση του διακομιστή DSC.
Έλεγχος της λειτουργικότητας του διακομιστή DSC
- Ας ελέγξουμε ότι ο διακομιστής DSC είναι προσβάσιμος μέσω ενός προγράμματος περιήγησης ιστού.
- Τώρα ας ελέγξουμε αν ο διακομιστής έλξης DSC λειτουργεί σωστά. Για να γίνει αυτό, η λειτουργική μονάδα xPSDesiredStateConfiguration περιλαμβάνει τη δέσμη ενεργειών pullserversetuptests.ps1. Πριν εκτελέσετε αυτό το σενάριο, πρέπει να εγκαταστήσετε μια λειτουργική μονάδα Powershell με το όνομα Pester. Εγκαταστήστε το Install-Module -Name Pester.
- Ανοίξτε το C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<έκδοση μονάδας>DSCPullServerSetupPullServerDeploymentVerificationTest (στο παράδειγμα έκδοσης 8.0.0.0.0).
- Ανοίξτε το PullServerSetupTests.ps1 και ελέγξτε τη διαδρομή προς το web.config του διακομιστή DSC. Η διαδρομή προς το web.config, η οποία θα ελέγξει το σενάριο, επισημαίνεται με κόκκινο χρώμα. Αν χρειαστεί, αλλάζουμε αυτό το μονοπάτι.
- Εκτελέστε το pullserversetuptests.ps1
Invoke-Pester.PullServerSetupTests.ps1
Όλοι εργάζονται. - Στο SQL Management Studio βλέπουμε ότι οι διαχειριζόμενοι κεντρικοί υπολογιστές στέλνουν αναφορές στον διακομιστή αναφορών DSC και τα δεδομένα καταλήγουν στη βάση δεδομένων DSC στον διακομιστή SQL.
Αυτό είναι όλο. Στα επόμενα άρθρα σκοπεύω να σας πω πώς να δημιουργείτε αναφορές για τα δεδομένα που λαμβάνονται και θα θίξω ζητήματα σχετικά με την ανοχή σφαλμάτων και την επεκτασιμότητα.
Πηγή: www.habr.com