PowerShell Desired State Configuration partiella konfigurationer
Gäller för: Windows PowerShell 5.0 och senare.
I PowerShell 5.0 tillåter Desired State Configuration (DSC) att konfigurationer levereras i fragment och från flera källor. Den lokala Configuration Manager (LCM) på målnoden sätter ihop fragmenten innan de tillämpas som en enda konfiguration. Med den här funktionen kan du dela kontroll över konfigurationen mellan team eller individer. Om till exempel två eller flera team med utvecklare samarbetar med en tjänst kanske de vill skapa konfigurationer för att hantera sin del av tjänsten. Var och en av dessa konfigurationer kan hämtas från olika pull-servrar och de kan läggas till i olika utvecklingsstadier. Partiella konfigurationer gör det också möjligt för olika personer eller team att styra olika aspekter av att konfigurera noder utan att behöva samordna redigeringen av ett enda konfigurationsdokument. Ett team kan till exempel ansvara för att distribuera en virtuell dator och ett operativsystem, medan ett annat team kan distribuera andra program och tjänster på den virtuella datorn. Med partiella konfigurationer kan varje team skapa en egen konfiguration, utan att någon av dem är onödigt komplicerad.
Du kan använda partiella konfigurationer i push-läge, pull-läge eller en kombination av de två.
Partiella konfigurationer i push-läge
Om du vill använda partiella konfigurationer i push-läge konfigurerar du LCM på målnoden för att ta emot de partiella konfigurationerna. Varje partiell konfiguration måste push-överföras till målet med hjälp av cmdleten Publish-DSCConfiguration
. Målnoden kombinerar sedan den partiella konfigurationen till en enda konfiguration, och du kan tillämpa konfigurationen genom att anropa cmdleten Start-DscConfiguration .
Konfigurera LCM för partiella konfigurationer i push-läge
Om du vill konfigurera LCM för partiella konfigurationer i push-läge skapar du en DSCLocalConfigurationManager-konfiguration med ett PartialConfiguration-block för varje partiell konfiguration. Mer information om hur du konfigurerar LCM finns i Windows Konfigurera den lokala Configuration Manager. I följande exempel visas en LCM-konfiguration som förväntar sig två partiella konfigurationer – en som distribuerar operativsystemet och en som distribuerar och konfigurerar SharePoint.
[DSCLocalConfigurationManager()]
configuration PartialConfigDemo
{
Node localhost
{
PartialConfiguration ServiceAccountConfig
{
Description = 'Configuration to add the SharePoint service account to the Administrators group.'
RefreshMode = 'Push'
}
PartialConfiguration SharePointConfig
{
Description = 'Configuration for the SharePoint server'
RefreshMode = 'Push'
}
}
}
PartialConfigDemo
RefreshMode för varje partiell konfiguration är inställd på "Push". Namnen på PartialConfiguration-blocken (i det här fallet "ServiceAccountConfig" och "SharePointConfig") måste matcha exakt namnen på de konfigurationer som skickas till målnoden.
Anteckning
Namnet på varje PartialConfiguration-block måste matcha det faktiska namnet på konfigurationen eftersom det anges i konfigurationsskriptet, inte namnet på MOF-filen, som ska vara antingen namnet på målnoden eller localhost
.
Publicera och starta partiella konfigurationer för push-läge
Sedan anropar du Publish-DSCConfiguration för varje konfiguration och skickar mapparna som innehåller konfigurationsdokumenten som sökvägsparametrar .
Publish-DSCConfiguration
placerar MOF-konfigurationsfilerna till målnoderna. När du har publicerat båda konfigurationerna kan du anropa Start-DSCConfiguration –UseExisting
på målnoden.
Om du till exempel har kompilerat följande MOF-konfigurationsdokument på redigeringsnoden:
Get-ChildItem -Recurse
Directory: C:\PartialConfigTest
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 8/11/2016 1:55 PM ServiceAccountConfig
d----- 11/17/2016 4:14 PM SharePointConfig
Directory: C:\PartialConfigTest\ServiceAccountConfig
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 8/11/2016 2:02 PM 2034 TestVM.mof
Directory: C:\PartialConfigTest\SharePointConfig
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 11/17/2016 4:14 PM 1930 TestVM.mof
Du skulle publicera och köra konfigurationerna på följande sätt:
Publish-DscConfiguration .\ServiceAccountConfig -ComputerName 'TestVM'
Publish-DscConfiguration .\SharePointConfig -ComputerName 'TestVM'
Start-DscConfiguration -UseExisting -ComputerName 'TestVM'
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
17 Job17 Configuratio... Running True TestVM Start-DscConfiguration...
Anteckning
Användaren som kör cmdleten Publish-DSCConfiguration måste ha administratörsbehörighet på målnoden.
Partiella konfigurationer i pull-läge
Partiella konfigurationer kan hämtas från en eller flera pull-servrar (mer information om pull-servrar finns i Windows PowerShell Desired State Configuration pull-servrar. För att göra detta måste du konfigurera LCM på målnoden för att hämta de partiella konfigurationerna och namnge och hitta konfigurationsdokumenten korrekt på pull-servrarna.
Konfigurera LCM för hämtningsnodkonfigurationer
Om du vill konfigurera LCM för att hämta partiella konfigurationer från en hämtningsserver definierar du hämtningsservern i antingen ett ConfigurationRepositoryWeb (för en HTTP-hämtningsserver) eller ConfigurationRepositoryShare -block (för en SMB-hämtningsserver). Sedan skapar du PartialConfiguration-block som refererar till hämtningsservern med egenskapen ConfigurationSource . Du måste också skapa ett inställningsblock för att ange att LCM använder pull-läge och för att ange de ConfigurationNames eller ConfigurationID som hämtningsservern och målnoden använder för att identifiera konfigurationerna. Följande metakonfiguration definierar en HTTP-hämtningsserver med namnet CONTOSO-PullSrv och två partiella konfigurationer som använder den hämtningsservern.
Mer information om hur du konfigurerar LCM med ConfigurationNames finns i Konfigurera en pull-klient med konfigurationsnamn. Information om hur du konfigurerar LCM med ConfigurationID finns i Konfigurera en pull-klient med hjälp av konfigurations-ID.
Konfigurera LCM för pull-lägeskonfigurationer med hjälp av konfigurationsnamn
[DscLocalConfigurationManager()]
Configuration PartialConfigDemoConfigNames
{
Settings
{
RefreshFrequencyMins = 30;
RefreshMode = "PULL";
ConfigurationMode ="ApplyAndAutocorrect";
AllowModuleOverwrite = $true;
RebootNodeIfNeeded = $true;
ConfigurationModeFrequencyMins = 60;
}
ConfigurationRepositoryWeb CONTOSO-PullSrv
{
ServerURL = 'https://CONTOSO-PullSrv:8080/PSDSCPullServer.svc'
RegistrationKey = 5b41f4e6-5e6d-45f5-8102-f2227468ef38
ConfigurationNames = @("ServiceAccountConfig", "SharePointConfig")
}
PartialConfiguration ServiceAccountConfig
{
Description = "ServiceAccountConfig"
ConfigurationSource = @("[ConfigurationRepositoryWeb]CONTOSO-PullSrv")
}
PartialConfiguration SharePointConfig
{
Description = "SharePointConfig"
ConfigurationSource = @("[ConfigurationRepositoryWeb]CONTOSO-PullSrv")
DependsOn = '[PartialConfiguration]ServiceAccountConfig'
}
}
Konfigurera LCM för pull-lägeskonfigurationer med ConfigurationID
[DSCLocalConfigurationManager()]
configuration PartialConfigDemoConfigID
{
Node localhost
{
Settings
{
RefreshMode = 'Pull'
ConfigurationID = '1d545e3b-60c3-47a0-bf65-5afc05182fd0'
RefreshFrequencyMins = 30
RebootNodeIfNeeded = $true
}
ConfigurationRepositoryWeb CONTOSO-PullSrv
{
ServerURL = 'https://CONTOSO-PullSrv:8080/PSDSCPullServer.svc'
}
PartialConfiguration ServiceAccountConfig
{
Description = 'Configuration for the Base OS'
ConfigurationSource = '[ConfigurationRepositoryWeb]CONTOSO-PullSrv'
RefreshMode = 'Pull'
}
PartialConfiguration SharePointConfig
{
Description = 'Configuration for the Sharepoint Server'
ConfigurationSource = '[ConfigurationRepositoryWeb]CONTOSO-PullSrv'
DependsOn = '[PartialConfiguration]ServiceAccountConfig'
RefreshMode = 'Pull'
}
}
}
PartialConfigDemo
Du kan hämta partiella konfigurationer från mer än en hämtningsserver– du behöver bara definiera varje hämtningsserver och sedan referera till lämplig hämtningsserver i varje PartialConfiguration-block .
När du har skapat metakonfigurationen måste du köra den för att skapa ett konfigurationsdokument (en MOF-fil) och sedan anropa Set-DscLocalConfigurationManager för att konfigurera LCM.
Namnge och placera konfigurationsdokumenten på hämtningsservern (ConfigurationNames)
De partiella konfigurationsdokumenten måste placeras i mappen som anges som ConfigurationPath i web.config
filen för hämtningsservern (vanligtvis C:\Program Files\WindowsPowerShell\DscService\Configuration
).
Namnge konfigurationsdokument på hämtningsservern i PowerShell 5.1
Om du bara hämtar en partiell konfiguration från en enskild hämtningsserver kan konfigurationsdokumentet ha valfritt namn. Om du hämtar mer än en partiell konfiguration från en hämtningsserver kan konfigurationsdokumentet namnges antingen <ConfigurationName>.mof
, där ConfigurationName är namnet på den partiella konfigurationen, eller <ConfigurationName>.<NodeName>.mof
, där ConfigurationName är namnet på den partiella konfigurationen och NodeName är namnet på målnoden. På så sätt kan du hämta konfigurationer från Azure Automation DSC-hämtningsserver.
Namnge konfigurationsdokument på pull-servern i PowerShell 5.0
Konfigurationsdokumenten måste namnges på följande sätt: ConfigurationName.mof
, där ConfigurationName är namnet på den partiella konfigurationen. I vårt exempel ska konfigurationsdokumenten namnges på följande sätt:
ServiceAccountConfig.mof
ServiceAccountConfig.mof.checksum
SharePointConfig.mof
SharePointConfig.mof.checksum
Namnge och placera konfigurationsdokumenten på hämtningsservern (ConfigurationID)
De partiella konfigurationsdokumenten måste placeras i mappen som anges som ConfigurationPath i web.config
filen för hämtningsservern (vanligtvis C:\Program Files\WindowsPowerShell\DscService\Configuration
). Konfigurationsdokumenten måste namnges på följande sätt: <ConfigurationName>.<ConfigurationID>.mof
, där ConfigurationName är namnet på den partiella konfigurationen och ConfigurationID är konfigurations-ID:t som definierats i LCM på målnoden. I vårt exempel ska konfigurationsdokumenten namnges på följande sätt:
ServiceAccountConfig.1d545e3b-60c3-47a0-bf65-5afc05182fd0.mof
ServiceAccountConfig.1d545e3b-60c3-47a0-bf65-5afc05182fd0.mof.checksum
SharePointConfig.1d545e3b-60c3-47a0-bf65-5afc05182fd0.mof
SharePointConfig.1d545e3b-60c3-47a0-bf65-5afc05182fd0.mof.checksum
Köra partiella konfigurationer från en hämtningsserver
När LCM på målnoden har konfigurerats och konfigurationsdokumenten har skapats och fått ett korrekt namn på hämtningsservern hämtar målnoden de partiella konfigurationerna, kombinerar dem och tillämpar den resulterande konfigurationen med jämna mellanrum enligt vad som anges av egenskapen RefreshFrequencyMins för LCM. Om du vill framtvinga en uppdatering kan du anropa cmdleten Update-DscConfiguration för att hämta konfigurationerna och tillämpa dem.
Partiella konfigurationer i blandade push- och pull-lägen
Du kan också blanda push- och pull-lägen för partiella konfigurationer. Du kan alltså ha en partiell konfiguration som hämtas från en hämtningsserver, medan en annan partiell konfiguration push-överförs. Ange uppdateringsläget för varje partiell konfiguration enligt beskrivningen i föregående avsnitt. Följande metakonfiguration beskriver till exempel samma exempel, med den ServiceAccountConfig
partiella konfigurationen i pull-läge och den SharePointConfig
partiella konfigurationen i push-läge.
Blandade push- och pull-lägen med ConfigurationNames
[DscLocalConfigurationManager()]
Configuration PartialConfigDemoConfigNames
{
Settings
{
RefreshFrequencyMins = 30;
RefreshMode = "PULL";
ConfigurationMode = "ApplyAndAutocorrect";
AllowModuleOverwrite = $true;
RebootNodeIfNeeded = $true;
ConfigurationModeFrequencyMins = 60;
}
ConfigurationRepositoryWeb CONTOSO-PullSrv
{
ServerURL = 'https://CONTOSO-PullSrv:8080/PSDSCPullServer.svc'
RegistrationKey = 5b41f4e6-5e6d-45f5-8102-f2227468ef38
ConfigurationNames = @("ServiceAccountConfig", "SharePointConfig")
}
PartialConfiguration ServiceAccountConfig
{
Description = "ServiceAccountConfig"
ConfigurationSource = @("[ConfigurationRepositoryWeb]CONTOSO-PullSrv")
RefreshMode = 'Pull'
}
PartialConfiguration SharePointConfig
{
Description = "SharePointConfig"
DependsOn = '[PartialConfiguration]ServiceAccountConfig'
RefreshMode = 'Push'
}
}
Blandade push- och pull-lägen med ConfigurationID
[DSCLocalConfigurationManager()]
configuration PartialConfigDemo
{
Node localhost
{
Settings
{
RefreshMode = 'Pull'
ConfigurationID = '1d545e3b-60c3-47a0-bf65-5afc05182fd0'
RefreshFrequencyMins = 30
RebootNodeIfNeeded = $true
}
ConfigurationRepositoryWeb CONTOSO-PullSrv
{
ServerURL = 'https://CONTOSO-PullSrv:8080/PSDSCPullServer.svc'
}
PartialConfiguration ServiceAccountConfig
{
Description = 'Configuration for the Base OS'
ConfigurationSource = '[ConfigurationRepositoryWeb]CONTOSO-PullSrv'
RefreshMode = 'Pull'
}
PartialConfiguration SharePointConfig
{
Description = 'Configuration for the Sharepoint Server'
DependsOn = '[PartialConfiguration]ServiceAccountConfig'
RefreshMode = 'Push'
}
}
}
PartialConfigDemo
Observera att RefreshMode som anges i inställningsblocket är "Pull", men RefreshMode för den SharePointConfig
partiella konfigurationen är "Push".
Namnge och leta upp MOF-konfigurationsfilerna enligt beskrivningen ovan för respektive uppdateringsläge.
Anropa Publish-DSCConfiguration
för att publicera den SharePointConfig
partiella konfigurationen och antingen vänta tills konfigurationen ServiceAccountConfig
hämtas från hämtningsservern eller framtvinga en uppdatering genom att anropa Update-DscConfiguration.
Exempel på partiell konfiguration av ServiceAccountConfig
Configuration ServiceAccountConfig
{
Param (
[Parameter(Mandatory,
HelpMessage="Domain credentials required to add domain\sharepoint_svc to the local Administrators group.")]
[ValidateNotNullOrEmpty()]
[pscredential]$Credential
)
Import-DscResource -ModuleName PSDesiredStateConfiguration
Node localhost
{
Group LocalAdmins
{
GroupName = 'Administrators'
MembersToInclude = 'domain\sharepoint_svc',
'admins@example.domain'
Ensure = 'Present'
Credential = $Credential
}
WindowsFeature Telnet
{
Name = 'Telnet-Server'
Ensure = 'Absent'
}
}
}
ServiceAccountConfig
Exempel på partiell konfiguration av SharePointConfig
Configuration SharePointConfig
{
Param (
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[pscredential]$ProductKey
)
Import-DscResource -ModuleName xSharePoint
Node localhost
{
xSPInstall SharePointDefault
{
Ensure = 'Present'
BinaryDir = '\\FileServer\Installers\Sharepoint\'
ProductKey = $ProductKey
}
}
}
SharePointConfig