Gedeeltelijke configuraties van PowerShell Desired State Configuration
Van toepassing op: Windows PowerShell 5.0 en hoger.
In PowerShell 5.0 kunnen met Desired State Configuration (DSC) configuraties worden geleverd in fragmenten en vanuit meerdere bronnen. De local Configuration Manager (LCM) op het doelknooppunt plaatst de fragmenten samen voordat ze als één configuratie worden toegepast. Met deze mogelijkheid kunt u de controle over de configuratie delen tussen teams of personen. Als bijvoorbeeld twee of meer teams van ontwikkelaars samenwerken aan een service, willen ze mogelijk configuraties maken om hun deel van de service te beheren. Elk van deze configuraties kan worden opgehaald uit verschillende pull-servers en ze kunnen worden toegevoegd in verschillende ontwikkelingsstadia. Met gedeeltelijke configuraties kunnen verschillende personen of teams ook verschillende aspecten van het configureren van knooppunten beheren zonder dat ze de bewerking van één configuratiedocument hoeven te coördineren. Het ene team kan bijvoorbeeld verantwoordelijk zijn voor het implementeren van een VM en een besturingssysteem, terwijl een ander team andere toepassingen en services op die VM kan implementeren. Met gedeeltelijke configuraties kan elk team een eigen configuratie maken, zonder dat een van beide onnodig ingewikkeld is.
U kunt gedeeltelijke configuraties gebruiken in de pushmodus, pull-modus of een combinatie van de twee.
Gedeeltelijke configuraties in pushmodus
Als u gedeeltelijke configuraties in de pushmodus wilt gebruiken, configureert u de LCM op het doelknooppunt om de gedeeltelijke configuraties te ontvangen. Elke gedeeltelijke configuratie moet naar het doel worden gepusht met behulp van de Publish-DSCConfiguration
cmdlet. Het doelknooppunt combineert vervolgens de gedeeltelijke configuratie in één configuratie en u kunt de configuratie toepassen door de cmdlet Start-DscConfiguration aan te roepen.
LCM configureren voor gedeeltelijke pushmodusconfiguraties
Als u de LCM wilt configureren voor gedeeltelijke configuraties in de pushmodus, maakt u een DSCLocalConfigurationManager-configuratie met één PartialConfiguration-blok voor elke gedeeltelijke configuratie. Zie Windows De lokale Configuration Manager configureren voor meer informatie over het configureren van de LCM. In het volgende voorbeeld ziet u een LCM-configuratie die twee gedeeltelijke configuraties verwacht: een die het besturingssysteem implementeert en een die SharePoint implementeert en configureert.
[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
De RefreshMode voor elke gedeeltelijke configuratie is ingesteld op 'Push'. De namen van de PartialConfiguration-blokken (in dit geval 'ServiceAccountConfig' en 'SharePointConfig') moeten exact overeenkomen met de namen van de configuraties die naar het doelknooppunt worden gepusht.
Notitie
De naam van elk PartialConfiguration-blok moet overeenkomen met de werkelijke naam van de configuratie zoals deze is opgegeven in het configuratiescript, niet de naam van het MOF-bestand. Dit moet de naam zijn van het doelknooppunt of localhost
.
Gedeeltelijke pushmodusconfiguraties publiceren en starten
Vervolgens roept u Publish-DSCConfiguration aan voor elke configuratie, waarbij u de mappen met de configuratiedocumenten doorgeeft als padparameters .
Publish-DSCConfiguration
plaatst de MOF-configuratiebestanden op de doelknooppunten. Nadat u beide configuraties hebt gepubliceerd, kunt u aanroepen Start-DSCConfiguration –UseExisting
op het doelknooppunt.
Als u bijvoorbeeld de volgende MOF-configuratiedocumenten hebt gecompileerd op het ontwerpknooppunt:
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
U zou de configuraties als volgt publiceren en uitvoeren:
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...
Notitie
De gebruiker die de cmdlet Publish-DSCConfiguration uitvoert, moet beheerdersbevoegdheden hebben voor het doelknooppunt.
Gedeeltelijke configuraties in pull-modus
Gedeeltelijke configuraties kunnen worden opgehaald uit een of meer pull-servers (zie Windows PowerShell Desired State Configuration Pull-servers voor meer informatie over pull-servers. Hiervoor moet u de LCM op het doelknooppunt configureren om de gedeeltelijke configuraties op te halen en de configuratiedocumenten op de juiste manier op de pull-servers te benoemen en te zoeken.
De LCM configureren voor configuraties van pull-knooppunten
Als u de LCM wilt configureren voor het ophalen van gedeeltelijke configuraties van een pull-server, definieert u de pull-server in een ConfigurationRepositoryWeb-blok (voor een HTTP-pull-server) of ConfigurationRepositoryShare (voor een SMB-pull-server). Vervolgens maakt u PartialConfiguration-blokken die verwijzen naar de pull-server met behulp van de eigenschap ConfigurationSource . U moet ook een Instellingenblok maken om op te geven dat de LCM de pull-modus gebruikt en om de ConfigurationNames of ConfigurationID op te geven die de pull-server en het doelknooppunt gebruiken om de configuraties te identificeren. De volgende metaconfiguratie definieert een HTTP-pull-server met de naam CONTOSO-PullSrv en twee gedeeltelijke configuraties die gebruikmaken van die pull-server.
Zie Een pull-client instellen met configuratienamen voor meer informatie over het configureren van de LCM met behulp van ConfigurationNames. Zie Een pull-client instellen met configuratie-id voor informatie over het configureren van de LCM met behulp van ConfigurationID.
De LCM configureren voor configuraties in de pull-modus met behulp van configuratienamen
[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'
}
}
De LCM configureren voor pull-modusconfiguraties met behulp van 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
U kunt gedeeltelijke configuraties ophalen van meer dan één pull-server. U hoeft alleen maar elke pull-server te definiëren en vervolgens te verwijzen naar de juiste pull-server in elk partialconfiguration-blok .
Nadat u de metaconfiguratie hebt gemaakt, moet u deze uitvoeren om een configuratiedocument (een MOF-bestand) te maken en vervolgens Set-DscLocalConfigurationManager aanroepen om de LCM te configureren.
Naamgeving en plaatsing van de configuratiedocumenten op de pull-server (ConfigurationNames)
De gedeeltelijke configuratiedocumenten moeten worden geplaatst in de map die is opgegeven als het ConfigurationPath in het web.config
bestand voor de pull-server (meestal C:\Program Files\WindowsPowerShell\DscService\Configuration
).
Naamgevingsconfiguratiedocumenten op de pull-server in PowerShell 5.1
Als u slechts één gedeeltelijke configuratie van een afzonderlijke pull-server ophaalt, kan het configuratiedocument elke naam hebben. Als u meer dan één gedeeltelijke configuratie van een pull-server ophaalt, kan het configuratiedocument de naam <ConfigurationName>.mof
hebben, waarbij ConfigurationName de naam van de gedeeltelijke configuratie is of <ConfigurationName>.<NodeName>.mof
, waarbij ConfigurationName de naam is van de gedeeltelijke configuratie en NodeName de naam van het doelknooppunt is. Hiermee kunt u configuraties ophalen van Azure Automation DSC-pull-server.
Naamgevingsconfiguratiedocumenten op de pull-server in PowerShell 5.0
De configuratiedocumenten moeten de volgende naam hebben: ConfigurationName.mof
, waarbij ConfigurationName de naam is van de gedeeltelijke configuratie. In ons voorbeeld moeten de configuratiedocumenten de volgende naam krijgen:
ServiceAccountConfig.mof
ServiceAccountConfig.mof.checksum
SharePointConfig.mof
SharePointConfig.mof.checksum
Naamgeving en plaatsing van de configuratiedocumenten op de pull-server (ConfigurationID)
De gedeeltelijke configuratiedocumenten moeten worden geplaatst in de map die is opgegeven als het ConfigurationPath in het web.config
bestand voor de pull-server (meestal C:\Program Files\WindowsPowerShell\DscService\Configuration
). De configuratiedocumenten moeten de volgende naam hebben: , <ConfigurationName>.<ConfigurationID>.mof
waarbij ConfigurationName de naam is van de gedeeltelijke configuratie en ConfigurationID de configuratie-id is die is gedefinieerd in de LCM op het doelknooppunt. In ons voorbeeld moeten de configuratiedocumenten de volgende naam krijgen:
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
Gedeeltelijke configuraties uitvoeren vanaf een pull-server
Nadat de LCM op het doelknooppunt is geconfigureerd en de configuratiedocumenten zijn gemaakt en de juiste naam hebben op de pull-server, haalt het doelknooppunt de gedeeltelijke configuraties op, combineert deze en past het de resulterende configuratie regelmatig toe, zoals is opgegeven door de eigenschap RefreshFrequencyMins van de LCM. Als u een vernieuwing wilt afdwingen, kunt u de cmdlet Update-DscConfiguration aanroepen om de configuraties op te halen en toe te passen.
Gedeeltelijke configuraties in gemengde push- en pull-modi
U kunt ook push- en pull-modi combineren voor gedeeltelijke configuraties. Dat wil gezegd, u kunt één gedeeltelijke configuratie hebben die wordt opgehaald van een pull-server, terwijl een andere gedeeltelijke configuratie wordt gepusht. Geef de vernieuwingsmodus op voor elke gedeeltelijke configuratie, zoals beschreven in de vorige secties. In de volgende metaconfiguratie wordt bijvoorbeeld hetzelfde voorbeeld beschreven, met de gedeeltelijke configuratie in de ServiceAccountConfig
pull-modus en de gedeeltelijke configuratie in de SharePointConfig
pushmodus.
Gemengde push- en pull-modi met 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'
}
}
Gemengde push- en pull-modi met 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
Houd er rekening mee dat de RefreshMode die is opgegeven in het blok Instellingen 'Pull' is, maar de RefreshMode voor de SharePointConfig
gedeeltelijke configuratie is 'Push'.
Geef de configuratie-MOF-bestanden een naam en zoek deze, zoals hierboven beschreven, voor hun respectieve vernieuwingsmodi.
Roep Publish-DSCConfiguration
aan om de SharePointConfig
gedeeltelijke configuratie te publiceren en wacht tot de ServiceAccountConfig
configuratie is opgehaald van de pull-server of forceer een vernieuwing door Update-DscConfiguration aan te roepen.
Voorbeeld van gedeeltelijke configuratie van 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
Voorbeeld van gedeeltelijke configuratie van 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