Udostępnij przez


Sprawdzone metody 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 ani możliwości. Chcielibyśmy, aby wiedzieć, że nowsza wersja 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 na celu uwzględnienie procesu i rozszerzalności, aby pomóc inżynierom, którzy przygotowują się do rozwiązania. Szczegóły powinny zawierać najlepsze praktyki zidentyfikowane przez klientów, a następnie zweryfikowane przez zespół ds. produktu, aby zapewnić, że rekomendacje są przyszłościowe i uważane za stabilne.

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

Streszczenie

Ten dokument ma na celu zapewnienie oficjalnych wskazówek dla każdego, kto planuje implementację serwera ściągania konfiguracji żądanego stanu programu Windows PowerShell. Serwer ściągania to prosta usługa, której wdrożenie powinno zająć tylko kilka minut. Mimo że ten dokument zawiera wskazówki techniczne, które można wykorzystać we wdrożeniu, wartość tego dokumentu służy jako odniesienie do najlepszych rozwiązań i tego, co należy wziąć pod uwagę przed wdrożeniem. Czytelnicy powinni mieć podstawową wiedzę na temat certyfikatu DSC oraz terminów używanych do opisywania składników uwzględnionych we wdrożeniu certyfikatu DSC. Aby uzyskać więcej informacji, zobacz temat Omówienie konfiguracji żądanego stanu programu Windows PowerShell . Ponieważ oczekuje się, że DSC będzie ewoluować w tempie chmury, oczekuje się, że podstawowa technologia, w tym serwer ściągania, również będzie ewoluować i wprowadzać nowe możliwości. Niniejszy dokument zawiera tabelę wersji w załączniku, która zawiera odniesienia do poprzednich wersji oraz odniesienia do przyszłościowych rozwiązań, aby zachęcić do projektowania przyszłościowego.

Dwie główne sekcje tego dokumentu:

  • Planowanie konfiguracji
  • Instrukcja instalacji

Wersje struktury zarządzania Windows

Informacje zawarte w tym dokumencie mają zastosowanie do programu 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 jest głównym tematem tego dokumentu.

Konfiguracja żądanego stanu programu Windows PowerShell

Desired State Configuration (DSC) to platforma zarządzania, która umożliwia wdrażanie danych konfiguracyjnych i zarządzanie nimi przy użyciu składni branżowej o nazwie Managed Object Format (MOF) w celu opisania modelu CIM (Common Information Model). Istnieje projekt open source, Open Management Infrastructure (OMI), którego celem jest dalszy rozwój tych standardów na różnych platformach, w tym w systemie Linux i systemach operacyjnych sprzętu sieciowego. Aby uzyskać więcej informacji, zobacz stronę DMTF z łączami do specyfikacji MOF oraz dokumentów i źródła OMI.

Program Windows PowerShell udostępnia zestaw rozszerzeń językowych dla konfiguracji żądanego stanu, których można używać do tworzenia konfiguracji deklaratywnych i zarządzania nimi.

Rola serwera ściągania

Serwer ściągania zapewnia 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 opcjonalnie może zawierać funkcje dla 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) tak, aby wskazywał serwer ściągania, najnowsze dane konfiguracyjne i wszystkie wymagane skrypty są pobierane i stosowane. Może się to zdarzyć jako jednorazowe wdrożenie lub jako powtarzające się zadanie, co również sprawia, że serwer ściągania jest ważnym zasobem do zarządzania zmianami na dużą skalę. Aby uzyskać więcej informacji, zobacz Tryby konfiguracji wypychania i ściągania.

Planowanie konfiguracji

W przypadku każdego wdrożenia oprogramowania w przedsiębiorstwie istnieją informacje, które można zebrać z wyprzedzeniem, aby pomóc w zaplanowaniu poprawnej architektury i przygotowaniu się do kroków wymaganych do ukończenia wdrożenia. Poniższe sekcje zawierają informacje dotyczące sposobu przygotowania i połączeń organizacyjnych, które prawdopodobnie będą musiały zostać zaplanowane 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 systemie Windows Server 2012 i została zaktualizowana za pośrednictwem bieżących wersji programu Windows Management Framework (WMF).

Pobieranie oprogramowania

Oprócz instalowania najnowszej zawartości z usługi Windows Update istnieją dwa pliki do pobrania, które są uważane za najlepsze rozwiązanie w zakresie wdrażania serwera ściągania DSC: najnowsza wersja programu Windows Management Framework i moduł DSC do automatyzowania aprowizacji serwera ściągania.

Zasób DSC

Wdrożenie serwera ściągania można uprościć, aprowizując usługę przy użyciu skryptu konfiguracji DSC. Ten dokument zawiera skrypty konfiguracyjne, których można użyć do wdrożenia węzła serwera gotowego do produkcji. Aby korzystać 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 systemu Windows Server 2012 R2?
  • Czy środowisko wdrożeniowe będzie miało dostęp do Internetu, aby pobrać WMF i moduł z galerii online?
  • W jaki sposób zainstalujesz najnowsze aktualizacje zabezpieczeń po zainstalowaniu systemu operacyjnego?
  • Czy środowisko będzie miało dostęp do Internetu w celu uzyskania aktualizacji, czy też będzie miało 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 wstrzykiwania w trybie offline?

Wymagania sprzętowe

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

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

Zadanie planowania

  • Czy wdrożenie zostanie przeprowadzone na sprzęcie fizycznym, czy na platformie wirtualizacji?
  • Jak wygląda proces żądania nowego serwera dla środowiska docelowego?
  • Jaki jest średni czas oczekiwania, po którym serwer staje się dostępny?
  • O jaki rozmiar serwera poprosisz?

Accounts

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

Rekordy DNS

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

Kod CNAME DNS umożliwia utworzenie aliasu, który będzie odwoływał się do rekordu hosta (A). Intencją dodatkowego rekordu imienia i nazwiska jest zwiększenie elastyczności w przypadku konieczności zmiany w przyszłości. Rekord CNAME może pomóc w odizolowaniu konfiguracji klienta, dzięki czemu zmiany w środowisku serwera, takie jak zastąpienie serwera ściągania lub dodanie dodatkowych serwerów ściągania, nie będą wymagały odpowiedniej zmiany konfiguracji klienta.

Wybierając nazwę 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.

Sprawdzone metody 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 DNS nie jest dostępny, zamiast nazwy hosta może zostać użyty adres IP.
  • Wdrożenie z jednym węzłem — utwórz rekord CNAME DNS, który wskazuje 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 się skontaktować, aby utworzyć i zmienić rekordy DNS?
  • Jaki jest średni czas realizacji żądania rekordu DNS?
  • Czy musisz poprosić o statyczne rekordy nazwy hosta (A) dla serwerów?
  • O co będziesz prosić jako CNAME?
  • W razie potrzeby, jakiego rodzaju rozwiązania do równoważenia obciążenia użyjesz? (szczegółowe informacje można znaleźć w sekcji zatytułowanej Równoważenie obciążenia)

Infrastruktura klucza publicznego

Obecnie większość organizacji wymaga, aby ruch sieciowy, zwłaszcza ruch zawierający tak wrażliwe dane, jak konfiguracja serwerów, był weryfikowany i/lub szyfrowany podczas przesyłania. Chociaż możliwe jest wdrożenie serwera ściągania przy użyciu protokołu HTTP, który ułatwia wysyłanie żądań klientów w postaci zwykłego tekstu, najlepszym rozwiązaniem jest zabezpieczanie ruchu przy użyciu protokołu HTTPS. Usługę można skonfigurować do korzystania z protokołu HTTPS przy użyciu zestawu parametrów w zasobie DSC xPSDesiredStateConfiguration.

Wymagania dotyczące certyfikatów zabezpieczających ruch HTTPS dla serwera ściągania nie różnią się od zabezpieczania innych witryn sieci Web 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, z kim należy się skontaktować, aby zażądać certyfikatu?
  • Jaki jest średni czas realizacji żądania?
  • W jaki sposób plik certyfikatu zostanie do Ciebie przeniesiony?
  • W jaki sposób klucz prywatny certyfikatu zostanie do Ciebie przeniesiony?
  • Jak długi jest domyślny czas wygaśnięcia?
  • Czy ustalono nazwę DNS dla środowiska serwera ściągającego, której można użyć jako nazwy certyfikatu?

Wybór architektury

Serwer ściągania można wdrożyć przy użyciu usługi sieci Web hostowanej w usługach IIS lub udziału plików SMB. W większości sytuacji opcja usługi internetowej zapewni większą elastyczność. Nierzadko zdarza się, że ruch HTTPS przekracza 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 w sieci Web (oba tematy zostaną omówione w przyszłej wersji tego dokumentu), które zapewniają klientom mechanizm raportowania stanu z powrotem do serwera w celu scentralizowanego wglądu. Protokół SMB udostępnia 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 powodują, że rola serwera sieci Web jest niepożądana. W obu przypadkach należy pamiętać o ocenie wymagań dotyczących podpisywania i szyfrowania ruchu. Protokół HTTPS, podpisywanie SMB i zasady IPSEC to opcje, które warto rozważyć.

Równoważenie obciążenia

Klienci wchodzący w interakcję z usługą sieci Web wysyłają żądanie informacji, które jest zwracane w jednej odpowiedzi. Nie są wymagane żadne sekwencyjne żądania, więc nie jest konieczne, aby platforma równoważenia obciążenia zapewniała utrzymanie sesji 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 korzystasz ze sprzętowego systemu równoważenia obciążenia, kto przyjmie żądanie dodania nowej konfiguracji do urządzenia?
  • Jaki jest średni czas oczekiwania na skonfigurowanie nowej usługi sieci Web z równoważeniem obciążenia?
  • Jakie informacje będą wymagane w przypadku wniosku?
  • Czy będziesz musiał poprosić o dodatkowy adres IP, czy zajmie się tym zespół odpowiedzialny za równoważenie obciążenia?
  • Czy masz potrzebne rekordy DNS i czy będą one wymagane przez zespół odpowiedzialny za konfigurację rozwiązania do równoważenia obciążenia?
  • Czy rozwiązanie równoważenia obciążenia wymaga, aby infrastruktura kluczy publicznych była obsługiwana przez urządzenie, czy też może równoważyć obciążenie ruchu HTTPS, o ile nie ma wymagań dotyczących sesji?

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

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

W przyszłości ta sekcja zostanie rozszerzona i uwzględniona w Podręczniku operacyjnym serwera DSC Pull Server. W przewodniku omówiono codzienny proces zarządzania modułami i konfiguracjami w czasie za pomocą automatyzacji.

Moduły DSC

Klienci, którzy żądają konfiguracji, będą potrzebować wymaganych modułów DSC. Funkcjonalnością serwera ściągającego jest automatyzacja dystrybucji modułów DSC do klientów na żądanie. Jeśli wdrażasz serwer ściągania po raz pierwszy, być może jako laboratorium lub weryfikację koncepcji, prawdopodobnie będziesz polegać na modułach DSC, które są dostępne w repozytoriach publicznych, takich jak Galeria programu PowerShell lub PowerShell.org repozytoriów 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ć przejrzany przez osobę z doświadczeniem w programie PowerShell i wiedzą na temat środowiska, w którym moduły będą używane przed użyciem w środowisku produkcyjnym. Podczas wykonywania tego zadania jest to dobry moment, aby sprawdzić, czy w module nie ma dodatkowego ładunku, który można usunąć, takiego jak dokumentacja i przykładowe skrypty. Spowoduje to zmniejszenie przepustowości sieci na klienta w pierwszym żądaniu, gdy moduły będą pobierane przez sieć z serwera do klienta.

Każdy moduł musi być spakowany w określonym formacie, pliku ZIP o nazwie ModuleName_Version.zip, który zawiera ładunek modułu. Po skopiowaniu pliku na serwer należy utworzyć plik sumy kontrolnej. Gdy klienci łączą się z serwerem, suma kontrolna jest używana do sprawdzenia, czy zawartość modułu DSC nie uległa zmianie od czasu jego opublikowania.

New-DscChecksum -ConfigurationPath .\ -OutPath .\

Zadanie planowania

  • Jeśli planujesz środowisko testowe lub laboratoryjne, które scenariusze są kluczowe do walidacji?
  • Czy istnieją publicznie dostępne moduły, które zawierają zasoby obejmujące wszystko, czego potrzebujesz, czy też będziesz musiał tworzyć własne zasoby?
  • Czy Twoje środowisko będzie miało dostęp do Internetu w celu pobrania modułów publicznych?
  • Kto będzie odpowiedzialny za przegląd modułów DSC?
  • Jeśli planujesz środowisko produkcyjne, co będzie używane jako lokalne repozytorium do przechowywania modułów DSC?
  • Czy centralny zespół będzie akceptował moduły DSC od zespołów aplikacyjnych? Na czym będzie polegał ten proces?
  • Czy zautomatyzujesz pakowanie, kopiowanie i tworzenie sumy kontrolnej dla gotowych do produkcji modułów DSC 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 nosił nazwę z unikatowym identyfikatorem GUID. Gdy klienci są skonfigurowani do łączenia się 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, dzięki czemu konfiguracja może być stosowana z dokładnością do każdego węzła lub jako konfiguracja roli, która obejmuje wiele serwerów, które powinny mieć identyczne konfiguracje.

Identyfikatory guid

Planowanie identyfikatorów Guids konfiguracji jest warte dodatkowej uwagi podczas rozważania wdrożenia serwera ściągania. Nie ma konkretnych wymagań dotyczących sposobu obsługi identyfikatorów GUID, a proces prawdopodobnie będzie unikatowy dla każdego środowiska. Proces może być zarówno prosty, jak i złożony: centralnie przechowywany plik CSV, prosta tabela SQL, CMDB lub złożone rozwiązanie wymagające integracji z innym narzędziem lub oprogramowaniem. Istnieją dwa ogólne podejścia:

  • Przypisywanie identyfikatorów GUID na serwer — zapewnia pewność, że każda konfiguracja serwera jest kontrolowana indywidualnie. Zapewnia to pewien poziom precyzji aktualizacji i może działać dobrze w środowiskach z niewielką liczbą serwerów.

  • Przypisywanie identyfikatorów GUID na rolę serwera — wszystkie serwery, które pełnią tę samą funkcję, takie jak serwery sieci Web, używają tego samego identyfikatora GUID do odwoływania się do wymaganych danych konfiguracyjnych. Należy pamiętać, że jeśli wiele serwerów korzysta z tego samego identyfikatora GUID, wszystkie z nich zostaną zaktualizowane jednocześnie, gdy zmieni się konfiguracja.

    Identyfikator GUID to coś, co powinno być uważane za poufne dane, ponieważ może być wykorzystane przez osobę o złych zamiarach w celu uzyskania informacji o tym, jak serwery są wdrażane i konfigurowane w danym środowisku. Aby uzyskać więcej informacji, zobacz Bezpieczne przydzielanie identyfikatorów GUID w trybie ściągania konfiguracji żądanego stanu programu PowerShell.

Zadanie planowania

  • Kto będzie odpowiedzialny za kopiowanie konfiguracji do folderu serwera ściągania, gdy będą one gotowe?
  • Jeśli konfiguracje są tworzone przez zespół aplikacji, jak będzie wyglądał proces ich przekazywania?
  • Czy będziesz korzystać z repozytorium do przechowywania konfiguracji w trakcie ich tworzenia w różnych zespołach?
  • Czy zautomatyzujesz proces kopiowania konfiguracji na serwer i tworzenia sumy kontrolnej, gdy będą gotowe?
  • W jaki sposób identyfikatory Guid będą mapowane na serwery lub role i gdzie będą one przechowywane?
  • Czego będzie używać jako procesu do konfigurowania maszyn klienckich i jak będzie on integrować się z procesem tworzenia i przechowywania identyfikatorów konfiguracji Guid?

Instrukcja instalacji

Skrypty podane w tym dokumencie są stabilnymi przykładami. Zawsze dokładnie przeglądaj skrypty przed wykonaniem ich w środowisku produkcyjnym.

Wymagania wstępne

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

$PSVersionTable.PSVersion

Jeśli to możliwe, uaktualnij program Windows Management Framework do najnowszej wersji. Następnie pobierz xPsDesiredStateConfiguration moduł za pomocą następującego polecenia.

Install-Module xPSDesiredStateConfiguration

Polecenie poprosi Cię o zgodę przed pobraniem modułu.

Skrypty instalacyjne i konfiguracyjne

Najlepszą metodą wdrożenia serwera ściągania DSC jest użycie skryptu konfiguracji DSC. W tym dokumencie przedstawiono skrypty zawierające zarówno podstawowe ustawienia, które skonfigurują tylko usługę internetową DSC, jak i ustawienia zaawansowane, które skonfigurują kompleksową usługę internetową systemu Windows Server, w tym DSC.

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

Podstawowa konfiguracja dla systemu 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\'

Zaawansowana konfiguracja dla systemu 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 = 'AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00'
            }
        )
    }

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 i przykłady

W tym przykładzie pokazano, jak ręcznie zainicjować połączenie klienta (wymaga formatu WMF5) w celu przetestowania.

Update-DscConfiguration -Wait -Verbose

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

Funkcja programu PowerShell służąca do tworzenia sumy kontrolnej i publikowania pliku MOF DSC na serwerze ściągania SMB automatycznie generuje wymaganą sumę kontrolną, a następnie kopiuje zarówno konfigurację MOF, jak i pliki sum kontrolnych do serwera ściągania SMB.

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

Plik danych jest przechowywany w celu tworzenia informacji podczas wdrażania serwera ściągania, który zawiera usługę sieci Web OData. Typ pliku zależy od systemu operacyjnego, jak opisano poniżej.

  • Windows Server 2012 — typ pliku zawsze będzie wynosił .mdb
  • Windows Server 2012 R2 — domyślnym .edb typem pliku będzie wartość chyba, że w konfiguracji zostanie określony parametr a .mdb

W zaawansowanym przykładowym skrypcie do instalacji serwera ściągającego znajdziesz również przykład, jak automatycznie kontrolować web.config ustawienia plików, aby zapobiec wszelkim błędom spowodowanym typem pliku.