Najlepsze rozwiązania dotyczące serwera ściągania

Dotyczy: Windows PowerShell 4.0, Windows PowerShell 5.0

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.

Podsumowanie: ten dokument ma zawierać proces i rozszerzalność, aby pomóc inżynierom przygotowującym się do rozwiązania. Szczegóły powinny zawierać najlepsze rozwiązania zidentyfikowane przez klientów, a następnie zweryfikowane przez zespół produktu, aby zapewnić, że zalecenia będą dostępne w przyszłości i uznane za stabilne.

  • Autor: Michael Greene
  • Recenzenci: Ben Gelens, Ravikanth Chaganti, Aleksandar Nikolic
  • Opublikowano: Kwiecień 2015

Abstract

Ten dokument ma na celu zapewnienie oficjalnych wskazówek dla każdego, kto planuje wdrożenie serwera ściągania Windows PowerShell Desired State Configuration. Serwer ściągania to prosta usługa, która powinna potrwać tylko kilka minut. Chociaż ten dokument zawiera techniczne wskazówki dotyczące instrukcji, które mogą być używane we wdrożeniu, wartość tego dokumentu jest odniesieniem do najlepszych rozwiązań i tego, co należy o tym pomyśleć przed wdrożeniem. Czytelnicy powinni mieć podstawową znajomość rozszerzenia DSC oraz terminy używane do opisywania składników uwzględnionych we wdrożeniu DSC. Aby uzyskać więcej informacji, zobacz temat Omówienie Windows PowerShell Desired State Configuration. Oczekuje się, że rozszerzenie DSC będzie rozwijać się w tempie chmury, dlatego oczekuje się, że podstawowa technologia, w tym serwer ściągania, również będzie się rozwijać i wprowadzać nowe możliwości. Ten dokument zawiera tabelę wersji w dodatku, która zawiera odniesienia do poprzednich wersji i odwołań do przyszłych rozwiązań, które zachęcają do projektowania przyszłości.

Dwie główne sekcje tego dokumentu:

  • Planowanie konfiguracji
  • Przewodnik instalacji

Wersje Windows Management Framework

Informacje przedstawione w tym dokumencie mają zastosowanie do Windows Management Framework 5.0. Chociaż program WMF 5.0 nie jest wymagany do wdrażania i obsługi serwera ściągania, wersja 5.0 koncentruje się na tym dokumencie.

Windows PowerShell Desired State Configuration

Desired State Configuration (DSC) to platforma zarządzania, która umożliwia wdrażanie danych konfiguracji i zarządzanie nimi przy użyciu składni branżowej o nazwie Managed Object Format (MOF) w celu opisania modelu wspólnych informacji (CIM). Projekt open source Open Management Infrastructure (OMI) istnieje w celu dalszego rozwoju tych standardów na różnych platformach, w tym systemów operacyjnych Linux i sieci. Aby uzyskać więcej informacji, zobacz stronę DMTF łączącą się ze specyfikacjami MOF i dokumentami OMI i źródłem.

Windows PowerShell udostępnia zestaw rozszerzeń języka dla Desired State Configuration, których można użyć do tworzenia konfiguracji deklaratywnych i zarządzania nimi.

Ściąganie roli serwera

Serwer ściągania udostępnia scentralizowaną usługę do przechowywania konfiguracji, które będą dostępne dla węzłów docelowych.

Rolę serwera ściągania można wdrożyć jako wystąpienie serwera sieci Web lub udział plików SMB. Funkcja serwera internetowego obejmuje interfejs OData i może opcjonalnie obejmować możliwości węzłów docelowych w celu raportowania potwierdzenia powodzenia lub niepowodzenia w miarę stosowania konfiguracji. Ta funkcja jest przydatna w środowiskach, w których istnieje duża liczba węzłów docelowych. Po skonfigurowaniu węzła docelowego (nazywanego również klientem) wskaż serwer ściągania najnowsze dane konfiguracji, a wszystkie wymagane skrypty są pobierane i stosowane. Może się to zdarzyć w przypadku jednorazowego wdrożenia lub ponownego wykonania zadania, co sprawia, że serwer ściągania jest ważnym elementem zawartości do zarządzania zmianami na dużą skalę. Aby uzyskać więcej informacji, zobacz Tryby konfiguracji wypychania i ściągania.

Planowanie konfiguracji

W przypadku dowolnego wdrożenia oprogramowania w przedsiębiorstwie znajdują się informacje, które można zebrać z wyprzedzeniem, aby ułatwić planowanie prawidłowej architektury i przygotowanie do wykonania kroków wymaganych do ukończenia wdrożenia. W poniższych sekcjach przedstawiono informacje dotyczące przygotowywania i połączeń organizacyjnych, które prawdopodobnie będą musiały nastąpić z wyprzedzeniem.

Wymagania dotyczące oprogramowania

Wdrożenie serwera ściągania wymaga funkcji USŁUGI DSC systemu Windows Server. Ta funkcja została wprowadzona w Windows Server 2012 i została zaktualizowana przez bieżące wersje Windows Management Framework (WMF).

Oprogramowanie do pobrania

Oprócz instalowania najnowszej zawartości z Windows Update istnieją dwa pliki do pobrania uznawane za najlepsze rozwiązanie do wdrożenia serwera ściągania DSC: najnowsza wersja Windows Management Framework i moduł DSC do automatyzowania aprowizacji serwera ściągania.

Zasób DSC

Wdrożenie serwera ściągania można uprościć przez aprowizowanie usługi przy użyciu skryptu konfiguracji DSC. Ten dokument zawiera skrypty konfiguracji, których można użyć do wdrożenia produkcyjnego gotowego węzła serwera. Do korzystania ze skryptów konfiguracji wymagany jest moduł DSC, który nie jest dołączony do systemu Windows Server. Wymagana nazwa modułu to xPSDesiredStateConfiguration, która zawiera zasób DSC xDscWebService. Moduł xPSDesiredStateConfiguration można pobrać z Galeria programu PowerShell.

Install-Module Użyj polecenia cmdlet z modułu PowerShellGet.

Install-Module xPSDesiredStateConfiguration

Moduł PowerShellGet pobierze moduł, aby:

C:\Program Files\Windows PowerShell\Modules

Zadanie planowania

  • Czy masz dostęp do plików instalacyjnych dla Windows Server 2012 R2?
  • Czy środowisko wdrażania będzie mieć dostęp do Internetu, aby pobrać program WMF i moduł z galerii online?
  • Jak zainstalować najnowsze aktualizacje zabezpieczeń po zainstalowaniu systemu operacyjnego?
  • Czy środowisko będzie miało dostęp do Internetu w celu uzyskania aktualizacji, czy będzie mieć lokalny serwer Windows Server Update Services (WSUS)?
  • Czy masz dostęp do plików instalacyjnych systemu Windows Server, które zawierają już aktualizacje za pośrednictwem iniekcji w trybie offline?

Wymagania sprzętowe

Wdrożenia serwera ściągania są obsługiwane zarówno na serwerach fizycznych, jak i wirtualnych. Wymagania dotyczące ustalania rozmiaru serwera ściągania są zgodne z wymaganiami dotyczącymi Windows Server 2012 R2.

  • Procesor CPU: procesor 64-bitowy 1,4 GHz
  • Pamięć: 512 MB
  • Miejsce na dysku: 32 GB
  • Sieć: Karta Ethernet Gigabit

Zadanie planowania

  • Czy wdrożysz na sprzęcie fizycznym lub na platformie wirtualizacji?
  • Jaki jest proces żądania nowego serwera dla środowiska docelowego?
  • Jaki jest średni czas realizacji dla serwera, aby stał się dostępny?
  • Jakiego rozmiaru zażądasz serwera?

Konta

Nie ma żadnych wymagań dotyczących konta usługi w celu wdrożenia wystąpienia serwera ściągania. Istnieją jednak scenariusze, w których witryna internetowa może działać w kontekście konta użytkownika lokalnego. Na przykład jeśli istnieje potrzeba uzyskania dostępu do udziału magazynu dla zawartości witryny internetowej, a system Windows Server lub urządzenie hostujące udział magazynu nie są przyłączone do domeny.

Rekordy DNS

Nazwa serwera będzie potrzebna do użycia podczas konfigurowania klientów do pracy ze środowiskiem serwera ściągania. W środowiskach testowych zazwyczaj jest używana nazwa hosta serwera lub adres IP serwera może być używany, jeśli rozpoznawanie nazw DNS jest niedostępne. W środowiskach produkcyjnych lub w środowisku laboratoryjnym, które ma reprezentować wdrożenie produkcyjne, najlepszym rozwiązaniem jest utworzenie rekordu CNAME systemu DNS.

Rekord CNAME systemu DNS umożliwia utworzenie aliasu w celu odwoływania się do rekordu hosta (A). Celem dodatkowego rekordu nazwy jest zwiększenie elastyczności, jeśli w przyszłości będzie wymagana zmiana. CNAME może pomóc w odizolowaniu konfiguracji klienta, tak aby zmiany w środowisku serwera, takie jak zastąpienie serwera ściągania lub dodanie dodatkowych serwerów ściągnięcia, nie będą wymagały odpowiedniej zmiany konfiguracji klienta.

Podczas wybierania nazwy rekordu DNS należy pamiętać o architekturze rozwiązania. W przypadku korzystania z równoważenia obciążenia certyfikat używany do zabezpieczania ruchu za pośrednictwem protokołu HTTPS będzie musiał mieć taką samą nazwę jak rekord DNS.

Najlepsze rozwiązania dotyczące scenariuszy

  • Środowisko testowe — odtwórz planowane środowisko produkcyjne, jeśli to możliwe. Nazwa hosta serwera jest odpowiednia dla prostych konfiguracji. Jeśli system DNS jest niedostępny, adres IP może być używany zamiast nazwy hosta.
  • Wdrożenie pojedynczego węzła — utwórz rekord CNAME systemu DNS wskazujący nazwę hosta serwera.

Aby uzyskać więcej informacji, zobacz Konfigurowanie działania okrężnego DNS w systemie Windows Server.

Zadanie planowania

  • Czy wiesz, z kim skontaktować się, aby rekordy DNS zostały utworzone i zmienione?
  • Jaki jest średni zwrot dla żądania dla rekordu DNS?
  • Czy chcesz zażądać rekordów statycznej nazwy hosta (A) dla serwerów?
  • Czego zażądasz jako rekordu CNAME?
  • W razie potrzeby jakiego typu rozwiązanie równoważenia obciążenia będzie używane? (zobacz sekcję zatytułowaną Równoważenie obciążenia, aby uzyskać szczegółowe informacje)

Infrastruktura kluczy publicznych

Większość organizacji wymaga obecnie, aby ruch sieciowy, zwłaszcza ruch, który zawiera takie poufne dane, jak sposób konfigurowania serwerów, musi być weryfikowany i/lub szyfrowany podczas przesyłania. Chociaż istnieje możliwość wdrożenia serwera ściągania przy użyciu protokołu HTTP, który ułatwia żądania klientów w postaci zwykłego tekstu, najlepszym rozwiązaniem jest zabezpieczenie ruchu przy użyciu protokołu HTTPS. Usługę można skonfigurować do używania protokołu HTTPS przy użyciu zestawu parametrów w zasobie DSC xPSDesiredStateConfiguration.

Wymagania dotyczące certyfikatów dotyczące zabezpieczania ruchu HTTPS dla serwera ściągania nie różnią się od zabezpieczania żadnej innej witryny internetowej HTTPS. Szablon serwera sieci Web w usługach certyfikatów systemu Windows Server spełnia wymagane możliwości.

Zadanie planowania

  • Jeśli żądania certyfikatów nie są zautomatyzowane, skontaktuj się z tobą, aby zażądać certyfikatu?
  • Jaki jest średni zwrot dla żądania?
  • W jaki sposób plik certyfikatu zostanie przeniesiony do Ciebie?
  • W jaki sposób klucz prywatny certyfikatu zostanie przeniesiony do Ciebie?
  • Jak długo jest domyślny czas wygaśnięcia?
  • Czy rozliczyłeś nazwę DNS dla środowiska serwera ściągania, którego można użyć dla nazwy certyfikatu?

Wybieranie architektury

Serwer ściągania można wdrożyć przy użyciu usługi internetowej hostowanej w usługach IIS lub udziału plików SMB. W większości sytuacji opcja usługi internetowej zapewni większą elastyczność. Nietypowe jest, że ruch HTTPS przechodzi przez granice sieci, podczas gdy ruch SMB jest często filtrowany lub blokowany między sieciami. Usługa sieci Web oferuje również opcję dołączenia serwera zgodności lub Menedżera raportowania sieci Web (oba tematy do rozwiązania w przyszłej wersji tego dokumentu), który zapewnia mechanizm raportowania stanu klientów z powrotem do serwera w celu scentralizowanego wglądu. Protokół SMB zapewnia opcję dla środowisk, w których zasady określają, że serwer sieci Web nie powinien być używany, oraz dla innych wymagań środowiskowych, które sprawiają, że rola serwera sieci Web jest niepożądana. W obu przypadkach pamiętaj, aby ocenić wymagania dotyczące podpisywania i szyfrowania ruchu. Zasady HTTPS, podpisywania SMB i PROTOKOŁU IPSEC to wszystkie opcje, które warto rozważyć.

Równoważenie obciążenia

Klienci wchodzący w interakcję z usługą internetową wysyłają żądanie o informacje zwracane w jednej odpowiedzi. Nie są wymagane żadne żądania sekwencyjne, dlatego nie jest konieczne, aby platforma równoważenia obciążenia upewniła się, że sesje są utrzymywane na jednym serwerze w dowolnym momencie.

Zadanie planowania

  • Jakie rozwiązanie będzie używane do równoważenia obciążenia ruchu między serwerami?
  • Jeśli używasz sprzętowego modułu równoważenia obciążenia, kto podejmie żądanie dodania nowej konfiguracji do urządzenia?
  • Jaki jest średni zwrot dla żądania w celu skonfigurowania nowej usługi internetowej o zrównoważonym obciążeniu?
  • Jakie informacje będą wymagane dla żądania?
  • Czy konieczne będzie zażądanie dodatkowego adresu IP lub czy zespół odpowiedzialny za równoważenie obciążenia to obsłuży?
  • Czy potrzebne są rekordy DNS i czy będzie to wymagane przez zespół odpowiedzialny za konfigurowanie rozwiązania do równoważenia obciążenia?
  • Czy rozwiązanie równoważenia obciążenia wymaga obsługi infrastruktury kluczy publicznych przez urządzenie lub czy może równoważyć obciążenie ruchem HTTPS, o ile nie ma żadnych wymagań dotyczących sesji?

Konfiguracje przejściowe i moduły na serwerze ściągania

W ramach planowania konfiguracji należy zastanowić się, które moduły DSC i konfiguracje będą hostowane przez serwer ściągania. Na potrzeby planowania konfiguracji ważne jest, aby mieć podstawową wiedzę na temat przygotowywania i wdrażania zawartości na serwerze ściągania.

W przyszłości ta sekcja zostanie rozszerzona i uwzględniona w przewodniku obsługi serwera ściągania DSC. W tym przewodniku omówiono codzienny proces zarządzania modułami i konfiguracjami w czasie dzięki automatyzacji.

Moduły DSC

Klienci żądający konfiguracji będą potrzebować wymaganych modułów DSC. Funkcjonalność serwera ściągania polega na automatyzowaniu dystrybucji modułów DSC na klientach. Jeśli wdrażasz serwer ściągania po raz pierwszy, być może jako laboratorium lub weryfikację koncepcji, prawdopodobnie będziesz zależeć od modułów DSC, które są dostępne z repozytoriów publicznych, takich jak Galeria programu PowerShell lub repozytoria PowerShell.org GitHub dla modułów DSC.

Należy pamiętać, że nawet w przypadku zaufanych źródeł online, takich jak Galeria programu PowerShell, każdy moduł pobrany z repozytorium publicznego powinien zostać przejrzyony przez osobę z doświadczeniem programu PowerShell i wiedzą o środowisku, w którym moduły będą używane przed użyciem w środowisku produkcyjnym. Podczas wykonywania tego zadania warto sprawdzić dodatkowy ładunek w module, który można usunąć, np. dokumentację i przykładowe skrypty. Spowoduje to zmniejszenie przepustowości sieci na klienta w pierwszym żądaniu, gdy moduły zostaną pobrane za pośrednictwem sieci z serwera do klienta.

Każdy moduł musi być spakowany w określonym formacie, plik ZIP o nazwie ModuleName_Version.zip zawierający ładunek modułu. Po skopiowaniu pliku na serwer należy utworzyć plik sumy kontrolnej. Gdy klienci nawiązują połączenie z serwerem, suma kontrolna jest używana do sprawdzania, czy zawartość modułu DSC nie uległa zmianie od czasu opublikowania.

New-DscChecksum -ConfigurationPath .\ -OutPath .\

Zadanie planowania

  • Jeśli planujesz środowisko testowe lub laboratoryjne, które scenariusze są kluczowe do zweryfikowania?
  • Czy istnieją publicznie dostępne moduły zawierające zasoby, które obejmują wszystko, czego potrzebujesz, czy konieczne będzie utworzenie własnych zasobów?
  • Czy środowisko będzie miało dostęp do Internetu w celu pobrania modułów publicznych?
  • Kto będzie odpowiedzialny za przeglądanie modułów DSC?
  • Jeśli planujesz środowisko produkcyjne, co będzie używane jako repozytorium lokalne do przechowywania modułów DSC?
  • Czy centralny zespół zaakceptuje moduły DSC z zespołów aplikacji? Jaki będzie proces?
  • Czy zautomatyzujesz pakowanie, kopiowanie i tworzenie sumy kontrolnej dla modułów DSC gotowych do produkcji na serwerze z repozytorium źródłowego?
  • Czy Twój zespół będzie również odpowiedzialny za zarządzanie platformą automatyzacji?

Konfiguracje DSC

Celem serwera ściągania jest zapewnienie scentralizowanego mechanizmu dystrybucji konfiguracji DSC do węzłów klienta. Konfiguracje są przechowywane na serwerze jako dokumenty MOF. Każdy dokument będzie mieć nazwę z unikatowym identyfikatorem GUID. Gdy klienci są skonfigurowani do nawiązywania połączenia z serwerem ściągania, otrzymują również identyfikator GUID konfiguracji, której powinni zażądać. Ten system odwoływania się do konfiguracji przez identyfikator GUID gwarantuje globalną unikatowość i jest elastyczny, tak aby można było zastosować konfigurację z stopniem szczegółowości na węzeł lub jako konfigurację roli, która obejmuje wiele serwerów, które powinny mieć identyczne konfiguracje.

Identyfikatory guid

Planowanie identyfikatorów GUID konfiguracji jest warte dodatkowej uwagi podczas myślenia o wdrożeniu serwera ściągania. Nie ma szczególnego wymogu obsługi identyfikatorów GUID , a proces prawdopodobnie będzie unikatowy dla każdego środowiska. Proces może obejmować od prostych do złożonych: centralnie przechowywany plik CSV, prostą tabelę SQL, cmDB lub złożone rozwiązanie wymagające integracji z innym narzędziem lub rozwiązaniem programowym. Istnieją dwa ogólne podejścia:

  • Przypisywanie identyfikatorów GUID na serwer — zapewnia pewność, że każda konfiguracja serwera jest kontrolowana indywidualnie. Zapewnia to poziom dokładności aktualizacji i może działać dobrze w środowiskach z kilkoma serwerami.

  • Przypisywanie identyfikatorów GUID na rolę serwera — wszystkie serwery, które wykonują tę samą funkcję, takie jak serwery internetowe, używają tego samego identyfikatora GUID, aby odwoływać się do wymaganych danych konfiguracji. Należy pamiętać, że jeśli wiele serwerów ma ten sam identyfikator GUID, wszystkie z nich zostaną zaktualizowane jednocześnie, gdy konfiguracja ulegnie zmianie.

    Identyfikator GUID to coś, co powinno być uznawane za poufne dane, ponieważ może być ono używane przez osobę ze złośliwym zamiarem w celu uzyskania analizy sposobu wdrażania i konfigurowania serwerów w danym środowisku. Aby uzyskać więcej informacji, zobacz Bezpieczne przydzielanie identyfikatorów GUID w programie PowerShell Desired State Configuration tryb ściągania.

Zadanie planowania

  • Kto będzie odpowiedzialny za kopiowanie konfiguracji do folderu serwera ściągania, gdy będą gotowe?
  • Jeśli konfiguracje są tworzone przez zespół aplikacji, jaki będzie proces ich przekazania?
  • Czy będziesz korzystać z repozytorium do przechowywania konfiguracji w miarę ich tworzenia w różnych zespołach?
  • Czy zautomatyzujesz proces kopiowania konfiguracji na serwer i tworzenia sumy kontrolnej, gdy będą gotowe?
  • Jak zamapujesz identyfikatory GUID na serwery lub role i gdzie będą przechowywane?
  • Jakiego procesu będziesz używać jako procesu do konfigurowania maszyn klienckich i jak będzie on integrowany z procesem tworzenia i przechowywania identyfikatorów GUID konfiguracji?

Przewodnik instalacji

Skrypty podane w tym dokumencie są stabilnymi przykładami. Przed wykonaniem skryptów w środowisku produkcyjnym należy zawsze uważnie przeglądać skrypty.

Wymagania wstępne

Aby sprawdzić wersję programu PowerShell na serwerze, użyj następującego polecenia.

$PSVersionTable.PSVersion

Jeśli to możliwe, przeprowadź uaktualnienie do najnowszej wersji Windows Management Framework. Następnie pobierz xPsDesiredStateConfiguration moduł przy użyciu następującego polecenia.

Install-Module xPSDesiredStateConfiguration

Przed pobraniem modułu polecenie poprosi o zatwierdzenie.

Skrypty instalacji i konfiguracji

Najlepszą metodą wdrażania serwera ściągania DSC jest użycie skryptu konfiguracji DSC. W tym dokumencie przedstawiono skrypty, w tym zarówno podstawowe ustawienia, które konfigurują tylko usługę internetową DSC, jak i zaawansowane ustawienia, które będą konfigurować kompleksową usługę internetową systemu Windows Server, w tym usługę internetową DSC.

Uwaga: obecnie xPSDesiredStateConfiguration moduł DSC wymaga, aby serwer był ustawieniami regionalnymi EN-US.

Podstawowa konfiguracja Windows Server 2012

# This is a very basic Configuration to deploy a pull server instance in a lab
# environment on Windows Server 2012.

Configuration PullServer {
Import-DscResource -ModuleName xPSDesiredStateConfiguration

        # Load the Windows Server DSC Service feature
        WindowsFeature DSCServiceFeature
        {
          Ensure = 'Present'
          Name = 'DSC-Service'
        }

        # Use the DSC Resource to simplify deployment of the web service
        xDSCWebService PSDSCPullServer
        {
          Ensure = 'Present'
          EndpointName = 'PSDSCPullServer'
          Port = 8080
          PhysicalPath = "$env:SYSTEMDRIVE\inetpub\wwwroot\PSDSCPullServer"
          CertificateThumbPrint = 'AllowUnencryptedTraffic'
          ModulePath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules"
          ConfigurationPath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration"
          State = 'Started'
          DependsOn = '[WindowsFeature]DSCServiceFeature'
        }
}
PullServer -OutputPath 'C:\PullServerConfig\'
Start-DscConfiguration -Wait -Force -Verbose -Path 'C:\PullServerConfig\'

Konfiguracja zaawansowana dla Windows Server 2012 R2

# This is an advanced Configuration example for Pull Server production deployments
# on Windows Server 2012 R2. Many of the features demonstrated are optional and
# provided to demonstrate how to adapt the Configuration for multiple scenarios
# Select the needed resources based on the requirements for each environment.
# Optional scenarios include:
#      * Reduce footprint to Server Core
#      * Rename server and join domain
#      * Switch from SSL to TLS for HTTPS
#      * Automatically load certificate from Certificate Authority
#      * Locate Modules and Configuration data on remote SMB share
#      * Manage state of default websites in IIS

param (
        [Parameter(Mandatory=$true)]
        [ValidateNotNullorEmpty()]
        [System.String] $ServerName,
        [System.String] $DomainName,
        [System.String] $CARootName,
        [System.String] $CAServerFQDN,
        [System.String] $CertSubject,
        [System.String] $SMBShare,
        [Parameter(Mandatory=$true)]
        [ValidateNotNullorEmpty()]
        [PsCredential] $Credential
    )

Configuration PullServer {
    Import-DscResource -ModuleName xPSDesiredStateConfiguration, xWebAdministration, xCertificate, xComputerManagement
    Node localhost
    {

        # Configure the server to automatically corret configuration drift including reboots if needed.
        LocalConfigurationManager
        {
            ConfigurationMode = 'ApplyAndAutoCorrect'
            RebootNodeifNeeded = $node.RebootNodeifNeeded
            CertificateId = $node.Thumbprint
        }

        # Remove all GUI interfaces so the server has minimum running footprint.
        WindowsFeature ServerCore
        {
            Ensure = 'Absent'
            Name = 'User-Interfaces-Infra'
        }

        # Set the server name and if needed, join a domain. If not joining a domain, remove the DomainName parameter.
        xComputer DomainJoin
        {
            Name = $Node.ServerName
            DomainName = $Node.DomainName
            Credential = $Node.Credential
        }

        # The next series of settings disable SSL and enable TLS, for environments where that is required by policy.
        Registry TLS1_2ServerEnabled
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server'
            ValueName = 'Enabled'
            ValueData = 1
            ValueType = 'Dword'
        }

        Registry TLS1_2ServerDisabledByDefault
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server'
            ValueName = 'DisabledByDefault'
            ValueData = 0
            ValueType = 'Dword'
        }

        Registry TLS1_2ClientEnabled
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client'
            ValueName = 'Enabled'
            ValueData = 1
            ValueType = 'Dword'
        }

        Registry TLS1_2ClientDisabledByDefault
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client'
            ValueName = 'DisabledByDefault'
            ValueData = 0
            ValueType = 'Dword'
        }

        Registry SSL2ServerDisabled
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server'
            ValueName = 'Enabled'
            ValueData = 0
            ValueType = 'Dword'
        }

        # Install the Windows Server DSC Service feature
        WindowsFeature DSCServiceFeature
        {
            Ensure = 'Present'
            Name = 'DSC-Service'
        }

        # If using a certificate from a local Active Directory Enterprise Root Certificate Authority,
        # complete a request and install the certificate
        xCertReq SSLCert
        {
            CARootName = $Node.CARootName
            CAServerFQDN = $Node.CAServerFQDN
            Subject = $Node.CertSubject
            AutoRenew = $Node.AutoRenew
            Credential = $Node.Credential
        }

        # Use the DSC resource to simplify deployment of the web service.  You might also consider
        # modifying the default port, possibly leveraging port 443 in environments where that is
        # enforced as a standard.
        xDSCWebService PSDSCPullServer
        {
            Ensure = 'Present'
            EndpointName = 'PSDSCPullServer'
            Port = 8080
            PhysicalPath = "$env:SYSTEMDRIVE\inetpub\wwwroot\PSDSCPullServer"
            CertificateThumbPrint = 'CertificateSubject'
            CertificateSubject = $Node.CertSubject
            ModulePath = "$($Node.SMBShare)\DscService\Modules"
            ConfigurationPath = "$($Node.SMBShare)\DscService\Configuration"
            State = 'Started'
            DependsOn = '[WindowsFeature]DSCServiceFeature'
        }

        # Validate web config file contains current DB settings
        xWebConfigKeyValue CorrectDBProvider
        {
            ConfigSection = 'AppSettings'
            Key = 'dbprovider'
            Value = 'System.Data.OleDb'
            WebsitePath = 'IIS:\sites\PSDSCPullServer'
            DependsOn = '[xDSCWebService]PSDSCPullServer'
        }
        xWebConfigKeyValue CorrectDBConnectionStr
        {
            ConfigSection = 'AppSettings'
            Key = 'dbconnectionstr'
            Value = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\WindowsPowerShell\DscService\Devices.mdb;'
            WebsitePath = 'IIS:\sites\PSDSCPullServer'
            DependsOn = '[xDSCWebService]PSDSCPullServer'
        }

        # Stop the default website
        xWebsite StopDefaultSite
        {
            Ensure = 'Present'
            Name = 'Default Web Site'
            State = 'Stopped'
            PhysicalPath = 'C:\inetpub\wwwroot'
            DependsOn = '[WindowsFeature]DSCServiceFeature'
        }
    }
}

$configData = @{
    AllNodes = @(
        @{
            NodeName = 'localhost'
            ServerName = $ServerName
            DomainName = $DomainName
            CARootName = $CARootName
            CAServerFQDN = $CAServerFQDN
            CertSubject = $CertSubject
            AutoRenew = $true
            SMBShare = $SMBShare
            Credential = $Credential
            RebootNodeifNeeded = $true
            CertificateFile = 'c:\PullServerConfig\Cert.cer'
            Thumbprint = 'B9A39921918B466EB1ADF2509E00F5DECB2EFDA9'
            }
        )
    }

PullServer -ConfigurationData $configData -OutputPath 'C:\PullServerConfig\'
Set-DscLocalConfigurationManager -ComputerName localhost -Path 'C:\PullServerConfig\'
Start-DscConfiguration -Wait -Force -Verbose -Path 'C:\PullServerConfig\'

# .\Script.ps1 -ServerName web1 -domainname 'test.pha' -carootname 'test-dc01-ca' -caserverfqdn 'dc01.test.pha' -certsubject 'CN=service.test.pha' -smbshare '\\sofs1.test.pha\share'

Weryfikowanie funkcjonalności serwera ściągania

# This function is meant to simplify a check against a DSC pull server. If you do not use the
# default service URL, you will need to adjust accordingly.
function Verify-DSCPullServer ($fqdn) {
    ([xml](Invoke-WebRequest "https://$($fqdn):8080/psdscpullserver.svc" | % Content)).service.workspace.collection.href
}

Verify-DSCPullServer 'INSERT SERVER FQDN'
Expected Result:
Action
Module
StatusReport
Node

Konfigurowanie klientów

Configuration PullClient {
    param(
        $ID,
        $Server
    )
    LocalConfigurationManager
    {
        ConfigurationID = $ID;
        RefreshMode = 'PULL';
        DownloadManagerName = 'WebDownloadManager';
        RebootNodeIfNeeded = $true;
        RefreshFrequencyMins = 30;
        ConfigurationModeFrequencyMins = 15;
        ConfigurationMode = 'ApplyAndAutoCorrect';
        DownloadManagerCustomData = @{
            ServerUrl = "http://"+$Server+":8080/PSDSCPullServer.svc"
            AllowUnsecureConnection = $true
        }
    }
}

PullClient -ID 'INSERTGUID' -Server 'INSERTSERVER' -Output 'C:\DSCConfig\'
Set-DscLocalConfigurationManager -ComputerName 'Localhost' -Path 'C:\DSCConfig\' -Verbose

Dodatkowe odwołania, fragmenty kodu i przykłady

W tym przykładzie pokazano, jak ręcznie zainicjować połączenie klienta (wymaga programu WMF5) do testowania.

Update-DscConfiguration -Wait -Verbose

Polecenie cmdlet Add-DnsServerResourceRecordName służy do dodawania rekordu CNAME typu do strefy DNS.

Funkcja programu PowerShell do tworzenia sumy kontrolnej i publikowania narzędzia MOF DSC na serwerze ściągania SMB automatycznie generuje wymaganą sumę kontrolną, a następnie kopiuje zarówno pliki konfiguracji MOF, jak i sum kontrolnych do serwera ściągania SMB.

Dodatek — opis typów plików danych usługi ODATA

Plik danych jest przechowywany w celu utworzenia informacji podczas wdrażania serwera ściągania, który zawiera usługę internetową OData. Typ pliku zależy od systemu operacyjnego, zgodnie z poniższym opisem.

  • Windows Server 2012 — typ pliku będzie zawsze.mdb
  • Windows Server 2012 R2 — typ pliku będzie domyślnie .edb określony, chyba że .mdb określony w konfiguracji

W przykładowym skry skryscie Zaawansowanym do instalowania serwera ściągania znajdziesz również przykład automatycznego kontrolowania web.config ustawień pliku, aby zapobiec wystąpieniu błędu spowodowanego typem pliku.