Delen via


Best practices voor pull-servers

Van toepassing op: Windows PowerShell 4.0, Windows PowerShell 5.0

Belangrijk

De pull-server (Windows Feature DSC-Service) is een ondersteund onderdeel van Windows Server, maar er zijn geen plannen om nieuwe functies of mogelijkheden aan te bieden. We willen graag dat u weet dat een nieuwere versie van DSC nu algemeen beschikbaar is, beheerd door een functie van Azure Policy met de naam gastconfiguratie. De gastconfiguratieservice combineert functies van DSC-extensie, Azure Automation State Configuration en de meest gevraagde functies uit feedback van klanten. Gastconfiguratie omvat ook ondersteuning voor hybride machines via servers met Arc.

Samenvatting: Dit document is bedoeld om proces- en uitbreidbaarheid te bevatten om technici te helpen die de oplossing voorbereiden. Details moeten best practices bieden die door klanten zijn geïdentificeerd en vervolgens door het productteam worden gevalideerd om ervoor te zorgen dat aanbevelingen toekomstgericht zijn en als stabiel worden beschouwd.

  • Auteur: Michael Greene
  • Beoordelaars: Ben Gelens, Ravikanth Chaganti, Aleksandar Nikolic
  • Gepubliceerd: april 2015

Abstract

Dit document is ontworpen om officiële richtlijnen te bieden voor iedereen die een implementatie van een Windows PowerShell Desired State Configuration pull-server plant. Een pull-server is een eenvoudige service die slechts enkele minuten duurt om te implementeren. Hoewel dit document technische richtlijnen bevat die in een implementatie kunnen worden gebruikt, is de waarde van dit document een referentie voor best practices en waarover u moet nadenken voordat u gaat implementeren. Lezers moeten basiskennis hebben van DSC en de termen die worden gebruikt om de onderdelen te beschrijven die zijn opgenomen in een DSC-implementatie. Zie het onderwerp overzicht van Windows PowerShell Desired State Configuration voor meer informatie. Aangezien DSC zich naar verwachting met de cloudfrequentie zal ontwikkelen, wordt ook verwacht dat de onderliggende technologie, inclusief de pull-server, zich ontwikkelt en nieuwe mogelijkheden introduceert. Dit document bevat een versietabel in de bijlage met verwijzingen naar eerdere releases en verwijzingen naar toekomstige oplossingen om toekomstgerichte ontwerpen aan te moedigen.

De twee belangrijkste secties van dit document:

  • Configuratieplanning
  • Installatiehandleiding

Versies van de Windows Management Framework

De informatie in dit document is bedoeld voor Windows Management Framework 5.0. Hoewel WMF 5.0 niet vereist is voor het implementeren en gebruiken van een pull-server, is versie 5.0 de focus van dit document.

Windows PowerShell Desired State Configuration

Desired State Configuration (DSC) is een beheerplatform waarmee configuratiegegevens kunnen worden geïmplementeerd en beheerd met behulp van een branchesyntaxis met de naam Managed Object Format (MOF) om het Common Information Model (CIM) te beschrijven. Er bestaat een open source-project, Open Management Infrastructure (OMI), om deze standaarden verder te ontwikkelen op verschillende platforms, waaronder Linux- en netwerkhardwarebesturingssystemen. Zie de DMTF-pagina die is gekoppeld aan MOF-specificaties en OMI-documenten en -bron voor meer informatie.

Windows PowerShell biedt een set taalextensies voor Desired State Configuration die u kunt gebruiken om declaratieve configuraties te maken en te beheren.

Pull-serverfunctie

Een pull-server biedt een gecentraliseerde service voor het opslaan van configuraties die toegankelijk zijn voor doelknooppunten.

De pull-serverfunctie kan worden geïmplementeerd als een webserverexemplaar of een SMB-bestandsshare. De webserverfunctie bevat een OData-interface en kan optioneel mogelijkheden bevatten voor doelknooppunten om bevestiging van een geslaagde of mislukte fout te rapporteren wanneer configuraties worden toegepast. Deze functionaliteit is handig in omgevingen met een groot aantal doelknooppunten. Na het configureren van een doelknooppunt (ook wel een client genoemd) om naar de pull-server te verwijzen, worden de meest recente configuratiegegevens en eventuele vereiste scripts gedownload en toegepast. Dit kan gebeuren als een eenmalige implementatie of als een terugkerende taak, waardoor de pull-server ook een belangrijke troef is voor het beheren van wijzigingen op schaal. Zie Push- en Pull-configuratiemodi voor meer informatie.

Configuratieplanning

Voor elke implementatie van bedrijfssoftware is er informatie die vooraf kan worden verzameld om te helpen bij het plannen van de juiste architectuur en om voorbereid te zijn op de stappen die nodig zijn om de implementatie te voltooien. De volgende secties bevatten informatie over het voorbereiden en de organisatieverbindingen die waarschijnlijk van tevoren moeten plaatsvinden.

Softwarevereisten

Voor de implementatie van een pull-server is de FUNCTIE DSC-service van Windows Server vereist. Deze functie is geïntroduceerd in Windows Server 2012 en is bijgewerkt via doorlopende releases van Windows Management Framework (WMF).

Softwaredownloads

Naast het installeren van de nieuwste inhoud van Windows Update, worden er twee downloads beschouwd als best practice voor het implementeren van een DSC-pull-server: de nieuwste versie van Windows Management Framework en een DSC-module voor het automatiseren van de inrichting van pull-servers.

DSC-resource

Een pull-serverimplementatie kan worden vereenvoudigd door de service in te richten met behulp van een DSC-configuratiescript. Dit document bevat configuratiescripts die kunnen worden gebruikt om een productieklaar serverknooppunt te implementeren. Voor het gebruik van de configuratiescripts is een DSC-module vereist die niet is opgenomen in Windows Server. De vereiste modulenaam is xPSDesiredStateConfiguration, die de DSC-resource xDscWebService bevat. De module xPSDesiredStateConfiguration kan worden gedownload van de PowerShell Gallery.

Gebruik de Install-Module cmdlet uit de PowerShellGet-module .

Install-Module xPSDesiredStateConfiguration

De PowerShellGet-module downloadt de module voor het volgende:

C:\Program Files\Windows PowerShell\Modules

Planningstaak

  • Hebt u toegang tot de installatiebestanden voor Windows Server 2012 R2?
  • Heeft de implementatieomgeving internettoegang om WMF en de module te downloaden vanuit de onlinegalerie?
  • Hoe installeert u de meest recente beveiligingsupdates nadat u het besturingssysteem hebt geïnstalleerd?
  • Heeft de omgeving internettoegang om updates te verkrijgen of heeft deze een lokale Windows Server Update Services (WSUS)-server?
  • Hebt u toegang tot Windows Server-installatiebestanden die al updates bevatten via offlineinjectie?

Hardwarevereisten

Pull-serverimplementaties worden ondersteund op zowel fysieke als virtuele servers. De groottevereisten voor de pull-server zijn afgestemd op de vereisten voor Windows Server 2012 R2.

  • CPU: 1,4 GHz 64-bits processor
  • Geheugen: 512 MB
  • Schijfruimte: 32 GB
  • Netwerk: Gigabit Ethernet-adapter

Planningstaak

  • Gaat u implementeren op fysieke hardware of op een virtualisatieplatform?
  • Wat is het proces voor het aanvragen van een nieuwe server voor uw doelomgeving?
  • Wat is de gemiddelde doorlooptijd voor een server om beschikbaar te komen?
  • Welke grootte van de server wilt u aanvragen?

Accounts

Er zijn geen serviceaccountvereisten voor het implementeren van een pull-serverexemplaar. Er zijn echter scenario's waarin de website kan worden uitgevoerd in de context van een lokaal gebruikersaccount. Als er bijvoorbeeld toegang nodig is tot een opslagshare voor website-inhoud en de Windows Server of het apparaat dat als host fungeert voor de opslagshare, niet lid zijn van een domein.

DNS-records

U hebt een servernaam nodig die moet worden gebruikt bij het configureren van clients voor het werken met een pull-serveromgeving. In testomgevingen wordt doorgaans de hostnaam van de server gebruikt, of het IP-adres voor de server kan worden gebruikt als DNS-naamomzetting niet beschikbaar is. In productieomgevingen of in een testomgeving die is bedoeld om een productie-implementatie te vertegenwoordigen, is de best practice om een DNS CNAME-record te maken.

Met een DNS CNAME kunt u een alias maken die verwijst naar uw hostrecord (A). Het doel van de aanvullende naamrecord is om de flexibiliteit te vergroten als in de toekomst een wijziging vereist is. Een CNAME kan helpen bij het isoleren van de clientconfiguratie, zodat voor wijzigingen in de serveromgeving, zoals het vervangen van een pull-server of het toevoegen van extra pull-servers, geen overeenkomstige wijziging in de clientconfiguratie nodig is.

Houd bij het kiezen van een naam voor de DNS-record rekening met de oplossingsarchitectuur. Als u taakverdeling gebruikt, moet het certificaat dat wordt gebruikt om verkeer via HTTPS te beveiligen, dezelfde naam delen als de DNS-record.

Best practices voor scenario's

  • Testomgeving: reproduceer indien mogelijk de geplande productieomgeving. Een serverhostnaam is geschikt voor eenvoudige configuraties. Als DNS niet beschikbaar is, kan een IP-adres worden gebruikt in plaats van een hostnaam.
  • Implementatie met één knooppunt: maak een DNS CNAME-record die verwijst naar de hostnaam van de server.

Zie DNS Round Robin configureren in Windows Server voor meer informatie.

Planningstaak

  • Weet u met wie u contact moet opnemen om DNS-records te laten maken en wijzigen?
  • Wat is de gemiddelde doorlooptijd voor een aanvraag voor een DNS-record?
  • Moet u statische hostnaamrecords (A) aanvragen voor servers?
  • Wat wilt u aanvragen als een CNAME?
  • Welk type taakverdelingsoplossing gebruikt u indien nodig? (zie de sectie Taakverdeling voor meer informatie)

Openbare-sleutelinfrastructuur

De meeste organisaties vereisen tegenwoordig dat netwerkverkeer, met name verkeer dat gevoelige gegevens bevat, zoals de configuratie van servers, tijdens de overdracht moet worden gevalideerd en/of versleuteld. Hoewel het mogelijk is om een pull-server te implementeren met behulp van HTTP die clientaanvragen in duidelijke tekst mogelijk maakt, is het een best practice om verkeer te beveiligen met behulp van HTTPS. De service kan worden geconfigureerd voor het gebruik van HTTPS met behulp van een set parameters in de DSC-resource xPSDesiredStateConfiguration.

De certificaatvereisten voor het beveiligen van HTTPS-verkeer voor pull-server zijn niet anders dan het beveiligen van een andere HTTPS-website. De webserversjabloon in een Windows Server Certificate Services voldoet aan de vereiste mogelijkheden.

Planningstaak

  • Als certificaataanvragen niet geautomatiseerd zijn, met wie moet u dan contact opnemen om een certificaat aan te vragen?
  • Wat is de gemiddelde doorlooptijd voor de aanvraag?
  • Hoe wordt het certificaatbestand naar u overgedragen?
  • Hoe wordt de persoonlijke sleutel van het certificaat naar u overgedragen?
  • Hoe lang is de standaardverlooptijd?
  • Hebt u een DNS-naam voor de pull-serveromgeving gebruikt die u kunt gebruiken voor de certificaatnaam?

Een architectuur kiezen

Een pull-server kan worden geïmplementeerd met behulp van een webservice die wordt gehost op IIS of een SMB-bestandsshare. In de meeste gevallen biedt de webserviceoptie meer flexibiliteit. Het is niet ongebruikelijk dat HTTPS-verkeer netwerkgrenzen passeert, terwijl SMB-verkeer vaak wordt gefilterd of geblokkeerd tussen netwerken. De webservice biedt ook de mogelijkheid om een Conformance Server of Web Reporting Manager op te nemen (beide onderwerpen die in een toekomstige versie van dit document moeten worden behandeld) die een mechanisme bieden voor clients om de status terug te rapporteren aan een server voor gecentraliseerde zichtbaarheid. SMB biedt een optie voor omgevingen waarin beleid bepaalt dat een webserver niet mag worden gebruikt, en voor andere omgevingsvereisten die een webserverfunctie ongewenst maken. In beide gevallen moet u de vereisten voor het ondertekenen en versleutelen van verkeer evalueren. HTTPS-, SMB-ondertekenings- en IPSEC-beleid zijn allemaal opties die het overwegen waard zijn.

Taakverdeling

Clients die interactie hebben met de webservice, dienen een aanvraag in voor informatie die in één antwoord wordt geretourneerd. Er zijn geen sequentiële aanvragen vereist, dus het is niet nodig voor het taakverdelingsplatform om ervoor te zorgen dat sessies op elk moment op één server worden onderhouden.

Planningstaak

  • Welke oplossing wordt gebruikt voor het verdelen van verkeer tussen servers?
  • Als u een hardware load balancer gebruikt, wie neemt dan een aanvraag om een nieuwe configuratie toe te voegen aan het apparaat?
  • Wat is de gemiddelde doorlooptijd voor een aanvraag voor het configureren van een nieuwe webservice met gelijke taakverdeling?
  • Welke informatie is vereist voor de aanvraag?
  • Moet u een extra IP-adres aanvragen of verwerkt het team dat verantwoordelijk is voor taakverdeling dat?
  • Hebt u de benodigde DNS-records en is dit vereist door het team dat verantwoordelijk is voor het configureren van de oplossing voor taakverdeling?
  • Vereist de taakverdelingsoplossing dat PKI wordt verwerkt door het apparaat of kan het HTTPS-verkeer verdelen zolang er geen sessievereisten zijn?

Faseringsconfiguraties en modules op de pull-server

Als onderdeel van de configuratieplanning moet u nadenken over welke DSC-modules en -configuraties worden gehost door de pull-server. Voor het plannen van de configuratie is het belangrijk om basiskennis te hebben van het voorbereiden en implementeren van inhoud op een pull-server.

In de toekomst wordt deze sectie uitgebreid en opgenomen in een Operations Guide voor DSC Pull Server. In de handleiding wordt het dagelijkse proces besproken voor het beheren van modules en configuraties in de loop van de tijd met automatisering.

DSC-modules

Clients die een configuratie aanvragen, hebben de vereiste DSC-modules nodig. Een functionaliteit van de pull-server is het automatiseren van distributie op aanvraag van DSC-modules naar clients. Als u voor het eerst een pull-server implementeert, misschien als lab of als proof-of-concept, bent u waarschijnlijk afhankelijk van DSC-modules die beschikbaar zijn vanuit openbare opslagplaatsen, zoals de PowerShell Gallery of de PowerShell.org GitHub-opslagplaatsen voor DSC-modules.

Het is essentieel om te onthouden dat zelfs voor vertrouwde onlinebronnen, zoals de PowerShell Gallery, elke module die wordt gedownload uit een openbare opslagplaats, moet worden beoordeeld door iemand met PowerShell-ervaring en kennis van de omgeving waarin de modules worden gebruikt voordat ze in productie worden gebruikt. Tijdens het voltooien van deze taak is het een goed moment om te controleren op eventuele extra nettolading in de module die kan worden verwijderd, zoals documentatie en voorbeeldscripts. Dit vermindert de netwerkbandbreedte per client in de eerste aanvraag, wanneer modules via het netwerk van server naar client worden gedownload.

Elke module moet worden verpakt in een specifieke indeling, een ZIP-bestand met de naam ModuleName_Version.zip dat de nettolading van de module bevat. Nadat het bestand naar de server is gekopieerd, moet er een controlesombestand worden gemaakt. Wanneer clients verbinding maken met de server, wordt de controlesom gebruikt om te controleren of de inhoud van de DSC-module niet is gewijzigd sinds deze is gepubliceerd.

New-DscChecksum -ConfigurationPath .\ -OutPath .\

Planningstaak

  • Als u een test- of testomgeving plant, welke scenario's zijn essentieel om te valideren?
  • Zijn er openbaar beschikbare modules die resources bevatten voor alles wat u nodig hebt of moet u uw eigen resources maken?
  • Heeft uw omgeving internettoegang om openbare modules op te halen?
  • Wie is verantwoordelijk voor het beoordelen van DSC-modules?
  • Als u een productieomgeving plant, wat gaat u gebruiken als lokale opslagplaats voor het opslaan van DSC-modules?
  • Accepteert een centraal team DSC-modules van toepassingsteams? Hoe verloopt het proces?
  • Automatiseert u het verpakken, kopiëren en maken van een controlesom voor productieklare DSC-modules naar de server, vanuit uw bronopslagplaats?
  • Is uw team ook verantwoordelijk voor het beheer van het automatiseringsplatform?

DSC-configuraties

Het doel van een pull-server is om een gecentraliseerd mechanisme te bieden voor het distribueren van DSC-configuraties naar clientknooppunten. De configuraties worden op de server opgeslagen als MOF-documenten. Elk document krijgt een unieke guid. Wanneer clients zijn geconfigureerd om verbinding te maken met een pull-server, krijgen ze ook de GUID voor de configuratie die ze moeten aanvragen. Dit systeem van verwijzende configuraties door Guid garandeert globale uniekheid en is flexibel, zodat een configuratie kan worden toegepast met granulariteit per knooppunt of als een rolconfiguratie die veel servers omvat die identieke configuraties moeten hebben.

GUID's

Het plannen van configuratie-GUID's is extra aandacht waard bij het nadenken over een pull-serverimplementatie. Er is geen specifieke vereiste voor het verwerken van GUID's en het proces is waarschijnlijk uniek voor elke omgeving. Het proces kan variëren van eenvoudig tot complex: een centraal opgeslagen CSV-bestand, een eenvoudige SQL-tabel, een CMDB of een complexe oplossing waarvoor integratie met een ander hulpprogramma of softwareoplossing is vereist. Er zijn twee algemene benaderingen:

  • Guids per server toewijzen : biedt een mate van zekerheid dat elke serverconfiguratie afzonderlijk wordt beheerd. Dit biedt een mate van precisie rond updates en kan goed werken in omgevingen met weinig servers.

  • Guids per serverrol toewijzen : alle servers die dezelfde functie uitvoeren, zoals webservers, gebruiken dezelfde GUID om naar de vereiste configuratiegegevens te verwijzen. Houd er rekening mee dat als veel servers dezelfde GUID delen, ze allemaal tegelijkertijd worden bijgewerkt wanneer de configuratie wordt gewijzigd.

    De GUID is iets dat als gevoelige gegevens moet worden beschouwd, omdat deze kan worden gebruikt door iemand met schadelijke bedoelingen om informatie te verkrijgen over hoe servers worden geïmplementeerd en geconfigureerd in uw omgeving. Zie Guids veilig toewijzen in PowerShell Desired State Configuration Pull-modus voor meer informatie.

Planningstaak

  • Wie is verantwoordelijk voor het kopiëren van configuraties naar de map van de pull-server wanneer ze klaar zijn?
  • Als configuraties worden geschreven door een toepassingsteam, wat is dan het proces om ze te overhandigen?
  • Gebruikt u een opslagplaats om configuraties op te slaan terwijl ze worden gemaakt, in teams?
  • Gaat u het proces van het kopiëren van configuraties naar de server automatiseren en een controlesom maken wanneer ze klaar zijn?
  • Hoe wijst u GUID's toe aan servers of rollen en waar wordt dit opgeslagen?
  • Wat gaat u gebruiken als een proces voor het configureren van clientcomputers en hoe wordt dit geïntegreerd met uw proces voor het maken en opslaan van configuratie-GUID's?

Installatiehandleiding

Scripts in dit document zijn stabiele voorbeelden. Controleer scripts altijd zorgvuldig voordat u ze uitvoert in een productieomgeving.

Vereisten

Gebruik de volgende opdracht om de versie van PowerShell op uw server te controleren.

$PSVersionTable.PSVersion

Voer indien mogelijk een upgrade uit naar de nieuwste versie van Windows Management Framework. Download vervolgens de xPsDesiredStateConfiguration module met behulp van de volgende opdracht.

Install-Module xPSDesiredStateConfiguration

Met de opdracht wordt uw goedkeuring gevraagd voordat u de module downloadt.

Installatie- en configuratiescripts

De beste methode voor het implementeren van een DSC-pull-server is het gebruik van een DSC-configuratiescript. Dit document bevat scripts met zowel basisinstellingen waarmee alleen de DSC-webservice wordt geconfigureerd als geavanceerde instellingen waarmee een End-to-end Windows Server wordt geconfigureerd, inclusief DSC-webservice.

Opmerking: op dit moment moet de server en-US-landinstellingen hebben voor de xPSDesiredStateConfiguration DSC-module.

Basisconfiguratie voor 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\'

Geavanceerde configuratie voor 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'

De functionaliteit van de pull-server controleren

# 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

Clients configureren

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

Aanvullende verwijzingen, fragmenten en voorbeelden

In dit voorbeeld ziet u hoe u handmatig een clientverbinding start (vereist WMF5) voor testen.

Update-DscConfiguration -Wait -Verbose

De cmdlet Add-DnsServerResourceRecordName wordt gebruikt om een type CNAME-record toe te voegen aan een DNS-zone.

De PowerShell-functie voor het maken van een controlesom en het publiceren van DSC MOF naar SMB Pull Server genereert automatisch de vereiste controlesom en kopieert vervolgens zowel de MOF-configuratie- als de controlesombestanden naar de SMB-pull-server.

Bijlage - Informatie over gegevensbestandstypen van de ODATA-service

Een gegevensbestand wordt opgeslagen om informatie te maken tijdens de implementatie van een pull-server die de OData-webservice bevat. Het type bestand is afhankelijk van het besturingssysteem, zoals hieronder wordt beschreven.

  • Windows Server 2012: het bestandstype is altijd.mdb
  • Windows Server 2012 R2: het bestandstype wordt standaard ingesteld op .edb tenzij een .mdb is opgegeven in de configuratie

In het geavanceerde voorbeeldscript voor het installeren van een pull-server vindt u ook een voorbeeld van het automatisch beheren van de web.config bestandsinstellingen om te voorkomen dat er een fout optreedt die wordt veroorzaakt door het bestandstype.