Desired State Configuration Pull-tjänst
Viktigt
Pull-servern (Windows Feature DSC-Service) är en komponent som stöds i Windows Server, men det finns inga planer på att erbjuda nya funktioner. Vi rekommenderar att du börjar övergå från hanterade klienter till Azure Automation DSC (innehåller funktioner utöver pull-servern på Windows Server) eller någon av community-lösningarna som anges här.
Lokalt Konfigurationshanteraren (LCM) kan hanteras centralt av en pull-tjänstlösning. När du använder den här metoden registreras noden som hanteras med en tjänst och tilldelas en konfiguration i LCM-inställningarna. Konfigurationen och alla DSC-resurser som behövs som beroenden för konfigurationen laddas ned till datorn och används av LCM för att hantera konfigurationen. Information om tillståndet för den dator som hanteras överförs till tjänsten för rapportering. Det här begreppet kallas "pull service".
De aktuella alternativen för pull-tjänsten är:
- Azure Automation Desired State Configuration tjänst
- En pull-tjänst som körs Windows Server
- Community-lösningar med öppen källkod
- En SMB-resurs
Den rekommenderade skalan för varje lösning är följande:
| Lösning | Klientnoder |
|---|---|
| Windows Pull-server med MDB/ESENT-databas | Upp till 500 noder |
| Windows Pull-server med SQL databas | Upp till 3 500 noder |
| Azure Automation DSC | Både små och stora miljöer |
Den rekommenderade lösningen, och alternativet med de flesta tillgängliga funktionerna, är Azure Automation DSC. En övre gräns för antalet noder per Automation-konto har inte identifierats.
Azure-tjänsten kan hantera noder lokalt i privata datacenter eller i offentliga moln som Azure och AWS. För privata miljöer där servrar inte kan ansluta direkt till Internet kan du begränsa utgående trafik till endast det publicerade Azure IP-intervallet (se IP-intervall för Azure Datacenter).
Funktioner i onlinetjänsten som för närvarande inte är tillgängliga i pull-tjänsten på Windows Server är:
- Alla data krypteras under överföring och i vila
- Klientcertifikat skapas och hanteras automatiskt
- Lagring av hemligheter för central hantering av lösenord/autentiseringsuppgifter, eller variabler som servernamn eller anslutningssträngar
- Centralt hantera nodens LCM-konfiguration
- Tilldela konfigurationer centralt till klientnoder
- Släppa konfigurationsändringar i "kanariegrupper" för testning innan de når produktion
- Grafisk rapportering
- Statusinformation på DSC-resursnivå med kornighet
- Utförliga felmeddelanden från klientdatorer för felsökning
- Integrering med Azure Log Analytics för aviseringar, automatiserade uppgifter, Android/iOS-app för rapportering och avisering
DSC-pull-tjänst i Windows Server
Det går att konfigurera en pull-tjänst så att den körs Windows Server. Observera att pull-tjänstlösningen som ingår i Windows Server endast innehåller funktioner för att lagra konfigurationer och moduler för att ladda ned och samla in rapportdata i en databas. Den innehåller inte många av de funktioner som erbjuds av tjänsten i Azure och är därför inte ett bra verktyg för att utvärdera hur tjänsten skulle användas.
Pull-tjänsten som erbjuds i Windows Server är en webbtjänst i IIS som använder ett OData-gränssnitt för att göra DSC-konfigurationsfiler tillgängliga för målnoder när dessa noder frågar efter dem.
Krav för att använda en pull-server:
- En server som kör:
- WMF/PowerShell 4.0 eller högre
- IIS-serverroll
- DSC-tjänst
- Vi rekommenderar att du genererar ett certifikat för att skydda autentiseringsuppgifter som skickas till Local Konfigurationshanteraren (LCM) på målnoder
Det bästa sättet att konfigurera Windows Server som värd för pull-tjänsten är att använda en DSC-konfiguration. Ett exempelskript finns nedan.
Databassystem som stöds
| WMF 4.0 | WMF 5.0 | WMF 5.1 | WMF 5.1 |
|---|---|---|---|
| MDB | ESENT (standard), MDB | ESENT (standard), MDB | ESENT (standard), SQL Server, MDB |
Från och med version 17090 av Windows Server är SQL Server ett alternativ som stöds för Pull Service (Windows Feature DSC-Service). Detta ger ett nytt alternativ för skalning av stora DSC-miljöer som inte har migrerats till Azure Automation DSC.
Anteckning
SQL Server stöd kommer inte att läggas till i tidigare versioner av WMF 5.1 (eller tidigare) och kommer endast att vara tillgängligt på Windows Server-versioner som är större än eller lika med 17090.
Om du vill konfigurera pull-servern att SQL Server anger du SqlProvider till och $true SqlConnectionString till en giltig SQL Server-anslutningssträng. Mer information finns i SqlClient-anslutningssträngar.
Ett exempel på SQL Server med xDscWebService finns i Använda resursen xDscWebService och granska sedan2-xDscWebService_RegistrationUseSQLProvider_Config.ps1 på GitHub.
Använda resursen xDscWebService
Det enklaste sättet att konfigurera en webbserver är att använda resursen xDscWebService, som ingår i modulen xPSDesiredStateConfiguration. Följande steg beskriver hur du använder resursen i en Configuration som uppsättningar webbtjänsten.
Anropa cmdleten Install-Module för att installera modulen xPSDesiredStateConfiguration.
Anteckning
Install-Moduleingår i PowerShellGet-modulen, som ingår i PowerShell 5.0 och senare.Hämta ett SSL-certifikat för DSC-pull-servern från en betrodd certifikatutfärdare, antingen inom din organisation eller en offentlig auktoritet. Certifikatet som tas emot från auktoriteten är vanligtvis i PFX-format.
Installera certifikatet på noden som ska bli DSC-pull-servern på standardplatsen, som ska vara
CERT:\LocalMachine\My.- Anteckna certifikatets tumavtryck.
Välj ett GUID som ska användas som registreringsnyckel. Om du vill generera en med PowerShell anger du följande i PS-prompten och trycker på Retur:
[guid]::newGuid()ellerNew-Guid. Den här nyckeln används av klientnoder som en delad nyckel för autentisering under registreringen. Mer information finns i avsnittet Registreringsnyckel nedan.I PowerShell ISE startar du (F5) följande konfigurationsskript (ingår i mappen i modulen xPSDesiredStateConfiguration som
Sample_xDscWebServiceRegistration.ps1) . Det här skriptet uppsättningar upp pull-servern.configuration Sample_xDscWebServiceRegistration { param ( [string[]]$NodeName = 'localhost', [ValidateNotNullOrEmpty()] [string] $certificateThumbPrint, [Parameter(HelpMessage='This should be a string with enough entropy (randomness) to protect the registration of clients to the pull server. We will use new GUID by default.')] [ValidateNotNullOrEmpty()] [string] $RegistrationKey # A guid that clients use to initiate conversation with pull server ) Import-DSCResource -ModuleName PSDesiredStateConfiguration Import-DSCResource -ModuleName xPSDesiredStateConfiguration Node $NodeName { WindowsFeature DSCServiceFeature { Ensure = "Present" Name = "DSC-Service" } xDscWebService PSDSCPullServer { Ensure = "Present" EndpointName = "PSDSCPullServer" Port = 8080 PhysicalPath = "$env:SystemDrive\inetpub\PSDSCPullServer" CertificateThumbPrint = $certificateThumbPrint ModulePath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules" ConfigurationPath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration" State = "Started" DependsOn = "[WindowsFeature]DSCServiceFeature" RegistrationKeyPath = "$env:PROGRAMFILES\WindowsPowerShell\DscService" AcceptSelfSignedCertificates = $true UseSecurityBestPractices = $true Enable32BitAppOnWin64 = $false } File RegistrationKeyFile { Ensure = 'Present' Type = 'File' DestinationPath = "$env:ProgramFiles\WindowsPowerShell\DscService\RegistrationKeys.txt" Contents = $RegistrationKey } } }Kör konfigurationen och skicka tumavtrycket för SSL-certifikatet som parametern certificateThumbPrint och en GUID-registreringsnyckel som parametern RegistrationKey:
# To find the Thumbprint for an installed SSL certificate for use with the pull server list all # certificates in your local store and then copy the thumbprint for the appropriate certificate # by reviewing the certificate subjects dir Cert:\LocalMachine\my # Then include this thumbprint when running the configuration Sample_xDscWebServiceRegistration -certificateThumbprint 'A7000024B753FA6FFF88E966FD6E19301FAE9CCC' -RegistrationKey '140a952b-b9d6-406b-b416-e0f759c9c0e4' -OutputPath c:\Configs\PullServer # Run the compiled configuration to make the target node a DSC Pull Server Start-DscConfiguration -Path c:\Configs\PullServer -Wait -Verbose
Registreringsnyckel
Om du vill tillåta att klientnoder registreras med servern så att de kan använda konfigurationsnamn i stället för ett konfigurations-ID, sparas en registreringsnyckel som skapades av konfigurationen ovan i en fil med RegistrationKeys.txt namnet i C:\Program Files\WindowsPowerShell\DscService . Registreringsnyckeln fungerar som en delad hemlighet som används under den första registreringen av klienten med pull-servern. Klienten genererar ett själv signerat certifikat som används för att unikt autentisera till pull-servern när registreringen har slutförts. Tumavtrycket för det här certifikatet lagras lokalt och associeras med URL:en för pull-servern.
Anteckning
Registreringsnycklar stöds inte i PowerShell 4.0.
För att konfigurera en nod för autentisering med pull-servern måste registreringsnyckeln finnas i metakonfigurationen för alla målnoder som ska registreras med den här pull-servern. Observera att RegistrationKey i metakonfigurationen nedan tas bort när måldatorn har registrerats och att värdet måste matcha värdet som lagras i filen på RegistrationKeys.txt pull-servern ('140a952b-b9d6-406b-b416-e0f759c9c0e4' för det här exemplet). Hantera alltid registreringsnyckelvärdet på ett säkert sätt eftersom du vet att det tillåter att alla måldatorn registreras med pull-servern.
[DSCLocalConfigurationManager()]
configuration Sample_MetaConfigurationToRegisterWithLessSecurePullServer
{
param
(
[ValidateNotNullOrEmpty()]
[string] $NodeName = 'localhost',
[ValidateNotNullOrEmpty()]
[string] $RegistrationKey, #same as the one used to set up pull server in previous configuration
[ValidateNotNullOrEmpty()]
[string] $ServerName = 'localhost' #node name of the pull server, same as $NodeName used in previous configuration
)
Node $NodeName
{
Settings
{
RefreshMode = 'Pull'
}
ConfigurationRepositoryWeb CONTOSO-PullSrv
{
ServerURL = "https://$ServerName`:8080/PSDSCPullServer.svc" # notice it is https
RegistrationKey = $RegistrationKey
ConfigurationNames = @('ClientConfig')
}
ReportServerWeb CONTOSO-PullSrv
{
ServerURL = "https://$ServerName`:8080/PSDSCPullServer.svc" # notice it is https
RegistrationKey = $RegistrationKey
}
}
}
Sample_MetaConfigurationToRegisterWithLessSecurePullServer -RegistrationKey $RegistrationKey -OutputPath c:\Configs\TargetNodes
Anteckning
I avsnittet ReportServerWeb kan rapporteringsdata skickas till pull-servern.
Bristen på ConfigurationID-egenskapen i metakonfigurationsfilen innebär implicit att pull-servern stöder V2-versionen av pull-serverprotokollet så att en inledande registrering krävs. Omvänt innebär förekomsten av ett ConfigurationID att V1-versionen av pull-serverprotokollet används och det inte finns någon registreringsbearbetning.
Anteckning
I ett PUSH-scenario finns det en bugg i den aktuella versionen som gör det nödvändigt att definiera en ConfigurationID-egenskap i metakonfigurationsfilen för noder som aldrig har registrerats med en pull-server. Detta tvingar V1 Pull Server-protokollet och undviker meddelanden om registreringsfel.
Placera konfigurationer och resurser
När installationen av pull-servern har slutförts är mapparna som definieras av ConfigurationPath- och ModulePath-egenskaperna i konfigurationen för pull-servern där du placerar moduler och konfigurationer som är tillgängliga för målnoder att hämta. De här filerna måste ha ett visst format för att pull-servern ska kunna bearbeta dem korrekt.
Paketformat för DSC-resursmodul
Varje resursmodul måste zippas och namnges enligt följande {Module Name}_{Module Version}.zip mönster.
Till exempel skulle en modul med namnet xWebAdminstration med modulversionen 3.1.2.0 få namnet xWebAdministration_3.1.2.0.zip . Varje version av en modul måste finnas i en enda zip-fil.
Eftersom det bara finns en enda version av en resurs i varje zip-fil stöds inte modulformatet som lagts till i WMF 5.0 med stöd för flera modulversioner i en enda katalog. Det innebär att du måste göra en liten ändring i katalogstrukturen innan du paketera DSC-resursmoduler för användning med pull-servern. Standardformatet för moduler som innehåller DSC-resurs i WMF 5.0 är {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\ . Innan du paketera för pull-servern tar du bort mappen {Module version} så att sökvägen blir {Module Folder}\DscResources\{DSC Resource Folder}\ . Med den här ändringen zippa du mappen enligt beskrivningen ovan och placerar zip-filerna i mappen ModulePath.
Använd New-DscChecksum {module zip file} för att skapa en kontrollsummafil för den nyligen tillagda modulen.
MOF-konfigurationsformat
En MOF-konfigurationsfil måste kopplas till en kontrollsummafil så att en LCM på en målnod kan verifiera konfigurationen. Om du vill skapa en kontrollsumma anropar du cmdleten New-DscChecksum. Cmdleten tar en sökvägsparameter som anger den mapp där konfigurations-MOF finns. Cmdleten skapar en kontrollsummafil med namnet ConfigurationMOFName.mof.checksum , där är namnet på ConfigurationMOFName konfigurations-mof-filen. Om det finns fler än en konfigurations-MOF-filer i den angivna mappen skapas en kontrollsumma för varje konfiguration i mappen. Placera MOF-filerna och deras associerade kontrollsummafiler i ConfigurationPath-mappen.
Anteckning
Om du ändrar MOF-konfigurationsfilen på något sätt måste du också återskapa kontrollsummafilen.
Verktyg
För att underlätta konfiguration, validering och hantering av pull-servern finns följande verktyg med som exempel i den senaste versionen av modulen xPSDesiredStateConfiguration:
En modul som hjälper dig att paketera DSC-resursmoduler och konfigurationsfiler för användning på pull-servern. PublishModulesAndMofsToPullServer.psm1. Exempel nedan:
# Example 1 - Package all versions of given modules installed locally and MOF files are in c:\LocalDepot $moduleList = @('xWebAdministration', 'xPhp') Publish-DSCModuleAndMof -Source C:\LocalDepot -ModuleNameList $moduleList # Example 2 - Package modules and mof documents from c:\LocalDepot Publish-DSCModuleAndMof -Source C:\LocalDepot -ForceEtt skript som verifierar pull-servern har konfigurerats korrekt. PullServerSetupTests.ps1.
Community-lösningar för pull-tjänsten
DSC-communityn har skrivit flera lösningar för att implementera pull-tjänstprotokollet. För lokala miljöer erbjuder dessa pull-tjänstfunktioner och en möjlighet att bidra tillbaka till communityn med inkrementella förbättringar.
Hämta klientkonfiguration
I följande avsnitt beskrivs hur du ställer in pull-klienter i detalj:
- Konfigurera en DSC-pullklient med ett konfigurations-ID
- Konfigurera en DSC-pullklient med konfigurationsnamn
- Partiella konfigurationer