usługa ściągania Desired State Configuration

Ważne

Serwer ściągania (Windows Feature DSC-Service) jest obsługiwanym składnikiem systemu Windows Server, jednak nie ma planów oferowania nowych funkcji lub możliwości. Chcielibyśmy wiedzieć, że nowsza wersja rozszerzenia DSC jest teraz ogólnie dostępna, zarządzana przez funkcję Azure Policy o nazwie konfiguracja gościa. Usługa konfiguracji gościa łączy funkcje rozszerzenia DSC, Azure Automation State Configuration i najczęściej żądanych funkcji z opinii klientów. Konfiguracja gościa obejmuje również obsługę maszyn hybrydowych za pośrednictwem serwerów z obsługą usługi Arc.

Lokalne Configuration Manager (LCM) mogą być zarządzane centralnie przez rozwiązanie usługi ściągania. W przypadku korzystania z tego podejścia węzeł, który jest zarządzany, jest rejestrowany w usłudze i przypisany do konfiguracji w ustawieniach LCM. Konfiguracja i wszystkie zasoby DSC potrzebne jako zależności konfiguracji są pobierane na maszynę i używane przez narzędzie LCM do zarządzania konfiguracją. Informacje o stanie zarządzanego komputera są przekazywane do usługi na potrzeby raportowania. Ta koncepcja jest nazywana "usługą ściągania".

Bieżące opcje usługi ściągania obejmują:

  • usługa Azure Automation Desired State Configuration
  • Usługa ściągania uruchomiona w systemie Windows Server
  • Obsługiwane przez społeczność rozwiązania open source
  • Udział SMB

Zalecana skala dla każdego rozwiązania jest następująca:

Rozwiązanie Węzły klienta
Windows Pull Server przy użyciu bazy danych MDB/ESENT Maksymalnie 500 węzłów
Windows Pull Server przy użyciu bazy danych SQL Maksymalnie 3500 węzłów
Azure Automation DSC Zarówno małe, jak i duże środowiska

Zalecanym rozwiązaniem i opcją z największą dostępną funkcją jest Azure Automation DSC. Nie zidentyfikowano górnego limitu liczby węzłów na konto usługi Automation.

Usługa platformy Azure może zarządzać węzłami lokalnymi w prywatnych centrach danych lub w chmurach publicznych, takich jak Azure i AWS. W przypadku środowisk prywatnych, w których serwery nie mogą bezpośrednio łączyć się z Internetem, rozważ ograniczenie ruchu wychodzącego tylko do opublikowanego zakresu adresów IP platformy Azure (zobacz Zakresy adresów IP centrum danych Platformy Azure).

Funkcje usługi online, które nie są obecnie dostępne w usłudze ściągania w systemie Windows Server, obejmują:

  • Wszystkie dane są szyfrowane podczas przesyłania i magazynowania
  • Certyfikaty klienta są tworzone i zarządzane automatycznie
  • Wpisy tajne umożliwiają centralne zarządzanie hasłami/poświadczeniami lub zmiennymi , takimi jak nazwy serwerów lub parametry połączenia
  • Centralnie zarządzaj konfiguracją węzła LCM
  • Centralnie przypisz konfiguracje do węzłów klienta
  • Zmiana konfiguracji wydania na "grupy kanary" na potrzeby testowania przed dotarciem do środowiska produkcyjnego
  • Raportowanie graficzne
    • Szczegóły stanu na poziomie zasobu DSC poziomu szczegółowości
    • Pełne komunikaty o błędach z komputerów klienckich na potrzeby rozwiązywania problemów
  • Integracja z usługą Azure Log Analytics na potrzeby alertów, zautomatyzowanych zadań, aplikacji systemu Android/iOS na potrzeby raportowania i zgłaszania alertów

Usługa ściągania DSC w systemie Windows Server

Istnieje możliwość skonfigurowania usługi ściągania do uruchamiania w systemie Windows Server. Należy pamiętać, że rozwiązanie usługi ściągania zawarte w systemie Windows Server obejmuje tylko możliwości przechowywania konfiguracji i modułów do pobierania i przechwytywania danych raportu do bazy danych. Nie obejmuje ona wielu możliwości oferowanych przez usługę na platformie Azure, dlatego nie jest dobrym narzędziem do oceny sposobu użycia usługi.

Usługa ściągania oferowana w systemie Windows Server jest usługą sieci Web w usługach IIS, która używa interfejsu OData do udostępniania plików konfiguracji DSC węzłom docelowym, gdy te węzły o nie pytają.

Wymagania dotyczące korzystania z serwera ściągania:

  • Serwer z systemem:
    • Program WMF/PowerShell 4.0 lub nowszy
    • Rola serwera usług IIS
    • Usługa DSC
  • W idealnym przypadku niektóre sposoby generowania certyfikatu w celu zabezpieczenia poświadczeń przekazanych do Configuration Manager lokalnego (LCM) w węzłach docelowych

Najlepszym sposobem skonfigurowania systemu Windows Server do hostowania usługi ściągania jest użycie konfiguracji DSC. Poniżej przedstawiono przykładowy skrypt.

Obsługiwane systemy baz danych

WMF 4.0 WMF 5.0 WMF 5.1 WMF 5.1 (Windows Server Insider Preview 17090)
MDB ESENT (ustawienie domyślne), MDB ESENT (ustawienie domyślne), MDB ESENT (ustawienie domyślne), SQL Server, MDB

Począwszy od wersji 17090 systemu Windows Server, SQL Server jest obsługiwaną opcją dla usługi ściągania (Windows Feature DSC-Service). Zapewnia to nową opcję skalowania dużych środowisk DSC, które nie zostały zmigrowane do Azure Automation DSC.

Uwaga

SQL Server obsługa nie zostanie dodana do poprzednich wersji programu WMF 5.1 (lub starszej) i będzie dostępna tylko w systemie Windows Server w wersjach większych niż lub równych 17090.

Aby skonfigurować serwer ściągania do używania SQL Server, ustaw parametr SqlProvider na $true i SqlConnectionString na prawidłowe parametry połączenia SQL Server. Aby uzyskać więcej informacji, zobacz SqlClient Connection Strings (Parametry połączenia sqlclient). Aby zapoznać się z przykładem konfiguracji SQL Server za pomocą usługi xDscWebService, najpierw przeczytaj artykuł Using the xDscWebService resource (Korzystanie z zasobu xDscWebService), a następnie przejrzyj 2-xDscWebService_RegistrationUseSQLProvider_Config.ps1 w witrynie GitHub.

Korzystanie z zasobu xDscWebService

Najprostszym sposobem skonfigurowania serwera ściągania internetowego jest użycie zasobu xDscWebService uwzględnionego w module xPSDesiredStateConfiguration . W poniższych krokach wyjaśniono, jak używać zasobu w programie , który Configuration konfiguruje usługę internetową.

  1. Wywołaj polecenie cmdlet Install-Module , aby zainstalować moduł xPSDesiredStateConfiguration .

    Uwaga

    Install-Module Element jest zawarty w module PowerShellGet , który jest zawarty w programie PowerShell 5.0 lub nowszym.

  2. Pobierz certyfikat SSL dla serwera ściągania DSC z zaufanego urzędu certyfikacji w organizacji lub urzędzie publicznym. Certyfikat otrzymany od urzędu jest zwykle w formacie PFX.

  3. Zainstaluj certyfikat w węźle, który stanie się serwerem ściągania DSC w domyślnej lokalizacji, która powinna mieć wartość CERT:\LocalMachine\My.

    • Zanotuj odcisk palca certyfikatu.
  4. Wybierz identyfikator GUID, który ma być używany jako klucz rejestracji. Aby wygenerować przy użyciu programu PowerShell, wprowadź następujące polecenie w wierszu polecenia PS i naciśnij klawisz Enter: [guid]::newGuid() lub New-Guid. Ten klucz będzie używany przez węzły klienta jako klucz wspólny do uwierzytelniania podczas rejestracji. Aby uzyskać więcej informacji, zobacz sekcję Klucz rejestracji poniżej.

  5. W programie PowerShell ISE uruchom następujący skrypt konfiguracji (F5) (dołączony do folderu modułu xPSDesiredStateConfiguration jako Sample_xDscWebServiceRegistration.ps1). Ten skrypt konfiguruje serwer ściągania.

    configuration Sample_xDscWebServiceRegistration
    {
        param
        (
            [string[]]$NodeName = 'localhost',
    
            [ValidateNotNullOrEmpty()]
            [string] $certificateThumbPrint,
    
            [Parameter(HelpMessage='This should be a string with enough entropy (randomness)' +
                ' to protect the registration of clients to the pull server.  We will use new' +
                ' GUID by default.'
            )]
            [ValidateNotNullOrEmpty()]
            [string] $RegistrationKey   # A guid that clients use to initiate conversation with pull server
        )
    
        Import-DSCResource -ModuleName PSDesiredStateConfiguration
        Import-DSCResource -ModuleName xPSDesiredStateConfiguration
    
        Node $NodeName
        {
            WindowsFeature DSCServiceFeature
            {
                Ensure = "Present"
                Name   = "DSC-Service"
            }
    
            xDscWebService PSDSCPullServer
            {
                Ensure                  = "Present"
                EndpointName            = "PSDSCPullServer"
                Port                    = 8080
                PhysicalPath            = "$env:SystemDrive\inetpub\PSDSCPullServer"
                CertificateThumbPrint   = $certificateThumbPrint
                ModulePath              = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules"
                ConfigurationPath       = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration"
                State                   = "Started"
                DependsOn               = "[WindowsFeature]DSCServiceFeature"
                RegistrationKeyPath     = "$env:PROGRAMFILES\WindowsPowerShell\DscService"
                AcceptSelfSignedCertificates = $true
                UseSecurityBestPractices     = $true
                Enable32BitAppOnWin64   = $false
            }
    
            File RegistrationKeyFile
            {
                Ensure          = 'Present'
                Type            = 'File'
                DestinationPath = "$env:ProgramFiles\WindowsPowerShell\DscService\RegistrationKeys.txt"
                Contents        = $RegistrationKey
            }
        }
    }
    
  6. Uruchom konfigurację, przekazując odcisk palca certyfikatu SSL jako parametr certificateThumbPrint i klucz rejestracji identyfikatora GUID jako parametr RegistrationKey :

    # To find the Thumbprint for an installed SSL certificate for use with the pull server list all
    # certificates in your local store and then copy the thumbprint for the appropriate certificate
    # by     reviewing the certificate subjects
    
    dir Cert:\LocalMachine\my
    
    # Then include this thumbprint when running the configuration
    $sample_xDscWebServiceRegistrationSplat = @{
        certificateThumbprint = 'A7000024B753FA6FFF88E966FD6E19301FAE9CCC'
        RegistrationKey = '140a952b-b9d6-406b-b416-e0f759c9c0e4'
        OutputPath = 'C:\Configs\PullServer'
    }
    Sample_xDscWebServiceRegistration @sample_xDscWebServiceRegistrationSplat
    
    # Run the compiled configuration to make the target node a DSC Pull Server
    Start-DscConfiguration -Path c:\Configs\PullServer -Wait -Verbose
    

Klucz rejestracji

Aby umożliwić węzłom klienta zarejestrowanie się na serwerze w taki sposób, aby mogły używać nazw konfiguracji zamiast identyfikatora konfiguracji, klucz rejestracji utworzony przez powyższą konfigurację jest zapisywany w pliku o nazwie RegistrationKeys.txt w C:\Program Files\WindowsPowerShell\DscServicepliku . Klucz rejestracji działa jako wspólny klucz tajny używany podczas początkowej rejestracji przez klienta z serwerem ściągania. Po pomyślnym zakończeniu rejestracji klient wygeneruje certyfikat z podpisem własnym, który jest używany do unikatowego uwierzytelniania na serwerze ściągania. Odcisk palca tego certyfikatu jest przechowywany lokalnie i skojarzony z adresem URL serwera ściągania.

Uwaga

Klucze rejestracji nie są obsługiwane w programie PowerShell 4.0.

Aby skonfigurować węzeł do uwierzytelniania za pomocą serwera ściągania, klucz rejestracji musi znajdować się w metakonfiguracji dla dowolnego węzła docelowego, który będzie rejestrowany na tym serwerze ściągania. Pamiętaj, że klucz rejestracji w poniższej metakonfiguracji jest usuwany po pomyślnym zarejestrowaniu maszyny docelowej i że wartość musi być zgodna z wartością przechowywaną w RegistrationKeys.txt pliku na serwerze ściągania ('140a952b-b9d6-406b-b416-e0f759c9c9c0e4' na potrzeby tego przykładu). Zawsze należy bezpiecznie traktować wartość klucza rejestracji, ponieważ wiedząc, że umożliwia ona zarejestrowanie dowolnej maszyny docelowej na serwerze ściągania.

[DSCLocalConfigurationManager()]
configuration Sample_MetaConfigurationToRegisterWithLessSecurePullServer
{
    param
    (
        [ValidateNotNullOrEmpty()]
        [string] $NodeName = 'localhost',

        [ValidateNotNullOrEmpty()]
        [string] $RegistrationKey, # the key used to set up pull server in previous configuration

        [ValidateNotNullOrEmpty()]
        [string] $ServerName = 'localhost' # The name of the pull server, same as $NodeName used in previous configuration
    )

    Node $NodeName
    {
        Settings
        {
            RefreshMode        = 'Pull'
        }

        ConfigurationRepositoryWeb CONTOSO-PullSrv
        {
            ServerURL          = "https://$ServerName`:8080/PSDSCPullServer.svc"
            RegistrationKey    = $RegistrationKey
            ConfigurationNames = @('ClientConfig')
        }

        ReportServerWeb CONTOSO-PullSrv
        {
            ServerURL       = "https://$ServerName`:8080/PSDSCPullServer.svc"
            RegistrationKey = $RegistrationKey
        }
    }
}

$MetaConfigurationSplat = @{
    RegistrationKey = $RegistrationKey
    OutputPath = 'c:\Configs\TargetNodes'
}

Sample_MetaConfigurationToRegisterWithLessSecurePullServer @MetaConfigurationSplat

Uwaga

Sekcja ReportServerWeb umożliwia wysyłanie danych raportowania do serwera ściągania.

Brak właściwości ConfigurationID w pliku metakonfiguracji niejawnie oznacza, że serwer ściągania obsługuje wersję 2 protokołu serwera ściągania, aby wymagana jest początkowa rejestracja. Z drugiej strony obecność identyfikatora ConfigurationID oznacza, że używana jest wersja V1 protokołu serwera ściągania i nie ma przetwarzania rejestracji.

Uwaga

W scenariuszu wypychania usterka istnieje w bieżącej wersji, która sprawia, że konieczne jest zdefiniowanie właściwości ConfigurationID w pliku metakonfiguracji węzłów, które nigdy nie zostały zarejestrowane na serwerze ściągania. Spowoduje to wymusinie protokołu serwera ściągania w wersji 1 i uniknięcie komunikatów o błędach rejestracji.

Umieszczanie konfiguracji i zasobów

Po zakończeniu konfiguracji serwera ściągnięcia foldery zdefiniowane przez właściwości ConfigurationPath i ModulePath w konfiguracji serwera ściągnięcia są miejscem, w którym zostaną wprowadzone moduły i konfiguracje, które będą dostępne dla węzłów docelowych do ściągnięcia. Te pliki muszą być w określonym formacie, aby serwer ściągania mógł je poprawnie przetworzyć.

Format pakietu modułu zasobów DSC

Każdy moduł zasobów musi być spakowany i nazwany zgodnie z poniższym wzorcem {Module Name}_{Module Version}.zip.

Na przykład moduł o nazwie xWebAdminstration z modułem w wersji 3.1.2.0 ma nazwę xWebAdministration_3.1.2.0.zip. Każda wersja modułu musi być zawarta w jednym pliku zip. Ponieważ w każdym pliku zip istnieje tylko jedna wersja zasobu, format modułu dodany w programie WMF 5.0 z obsługą wielu wersji modułów w jednym katalogu nie jest obsługiwany. Oznacza to, że przed pakowaniem modułów zasobów DSC do użycia z serwerem ściągania należy wprowadzić niewielką zmianę w strukturze katalogów. Domyślnym formatem modułów zawierających zasób DSC w programie WMF 5.0 jest {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\. Przed spakowaniem serwera ściągania usuń folder {Module version} , aby ścieżka stała się {Module Folder}\DscResources\{DSC Resource Folder}\. Dzięki tej zmianie spakuj folder zgodnie z powyższym opisem i umieść te pliki zip w folderze ModulePath .

Użyj New-DscChecksum {module zip file} polecenia , aby utworzyć plik sumy kontrolnej dla nowo dodanego modułu.

Format MOF konfiguracji

Plik MOF konfiguracji musi być sparowany z plikiem sumy kontrolnej, aby program LCM w węźle docelowym mógł zweryfikować konfigurację. Aby utworzyć sumę kontrolną, wywołaj polecenie cmdlet New-DscChecksum . Polecenie cmdlet przyjmuje parametr Path , który określa folder, w którym znajduje się konfiguracja moF. Polecenie cmdlet tworzy plik sumy kontrolnej o nazwie ConfigurationMOFName.mof.checksum, gdzie ConfigurationMOFName jest nazwą pliku mof konfiguracji. Jeśli w określonym folderze znajduje się więcej niż jeden plik MOF konfiguracji, dla każdej konfiguracji w folderze zostanie utworzona suma kontrolna. Umieść pliki MOF i skojarzone z nimi pliki sum kontrolnych w folderze ConfigurationPath .

Uwaga

Jeśli zmienisz plik MOF konfiguracji w jakikolwiek sposób, musisz również ponownie utworzyć plik sumy kontrolnej.

Narzędzia

Aby ułatwić konfigurowanie, weryfikowanie serwera ściągania i zarządzanie nim, poniższe narzędzia są dołączane jako przykłady w najnowszej wersji modułu xPSDesiredStateConfiguration:

  1. Moduł, który pomoże w pakowaniu modułów zasobów DSC i plików konfiguracji do użycia na serwerze ściągania. PublishModulesAndMofsToPullServer.psm1. Poniżej przedstawiono przykłady:

    # Example 1 - Package all versions of given modules installed locally and MOF files are in c:\LocalDepot
    $moduleList = @('xWebAdministration', 'xPhp')
    Publish-DSCModuleAndMof -Source C:\LocalDepot -ModuleNameList $moduleList
    
    # Example 2 - Package modules and mof documents from c:\LocalDepot
    Publish-DSCModuleAndMof -Source C:\LocalDepot -Force
    
  2. Skrypt, który sprawdza poprawność konfiguracji serwera ściągania. PullServerSetupTests.ps1.

Community Solutions for Pull Service

Społeczność DSC utworzyła wiele rozwiązań do implementowania protokołu usługi ściągania. W przypadku środowisk lokalnych te oferują możliwości usługi ściągania i możliwość ponownego współtworzenia społeczności za pomocą ulepszeń przyrostowych.

Ściąganie konfiguracji klienta

W poniższych tematach opisano szczegółowo konfigurowanie klientów ściągania:

Zobacz też