Udostępnij za pośrednictwem


Program PowerShell Desired State Configuration częściowych konfiguracji

Dotyczy: Windows PowerShell 5.0 i nowszych.

W programie PowerShell 5.0 Desired State Configuration (DSC) umożliwia dostarczanie konfiguracji w fragmentach i z wielu źródeł. Lokalna Configuration Manager (LCM) w węźle docelowym umieszcza fragmenty razem przed zastosowaniem ich jako pojedynczej konfiguracji. Ta funkcja umożliwia udostępnianie kontroli nad konfiguracją między zespołami lub osobami. Jeśli na przykład co najmniej dwa zespoły deweloperów współpracują z usługą, mogą oni chcieć utworzyć konfiguracje do zarządzania częścią usługi. Każdą z tych konfiguracji można ściągnąć z różnych serwerów ściągania i można je dodać na różnych etapach programowania. Konfiguracje częściowe umożliwiają również różnym osobom lub zespołom kontrolowanie różnych aspektów konfigurowania węzłów bez konieczności koordynowania edytowania pojedynczego dokumentu konfiguracji. Na przykład jeden zespół może być odpowiedzialny za wdrożenie maszyny wirtualnej i systemu operacyjnego, podczas gdy inny zespół może wdrożyć inne aplikacje i usługi na tej maszynie wirtualnej. W przypadku konfiguracji częściowych każdy zespół może utworzyć własną konfigurację, bez konieczności niepotrzebnego komplikowania.

Konfiguracje częściowe można używać w trybie wypychania, trybie ściągania lub kombinacji tych dwóch.

Częściowe konfiguracje w trybie wypychania

Aby użyć konfiguracji częściowych w trybie wypychania, należy skonfigurować narzędzie LCM w węźle docelowym w celu odbierania częściowych konfiguracji. Każda konfiguracja częściowa musi zostać wypchnięta do obiektu docelowego przy użyciu Publish-DSCConfiguration polecenia cmdlet . Następnie węzeł docelowy łączy konfigurację częściową w jedną konfigurację i można zastosować konfigurację, wywołując polecenie cmdlet Start-DscConfiguration .

Konfigurowanie programu LCM na potrzeby konfiguracji częściowych w trybie wypychania

Aby skonfigurować narzędzie LCM dla częściowych konfiguracji w trybie wypychania, należy utworzyć konfigurację DSCLocalConfigurationManager z jednym blokiem PartialConfiguration dla każdej konfiguracji częściowej. Aby uzyskać więcej informacji na temat konfigurowania programu LCM, zobacz Konfigurowanie lokalnego Configuration Manager systemu Windows. W poniższym przykładzie pokazano konfigurację LCM, która oczekuje dwóch częściowych konfiguracji — jednej, która wdraża system operacyjny, oraz jednej, która wdraża i konfiguruje program 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

Tryb RefreshMode dla każdej konfiguracji częściowej jest ustawiony na wartość "Wypychanie". Nazwy bloków PartialConfiguration (w tym przypadku "ServiceAccountConfig" i "SharePointConfig") muszą być zgodne dokładnie z nazwami konfiguracji wypychanych do węzła docelowego.

Uwaga

Nazwa każdego bloku PartialConfiguration musi być zgodna z rzeczywistą nazwą konfiguracji, jak określono w skrypcie konfiguracji, a nie nazwą pliku MOF, który powinien być albo nazwą węzła docelowego lub localhost.

Publikowanie i uruchamianie konfiguracji częściowych trybu wypychania

Następnie należy wywołać metodę Publish-DSCConfiguration dla każdej konfiguracji, przekazując foldery zawierające dokumenty konfiguracji jako parametry ścieżki . Publish-DSCConfigurationumieszcza pliki MOF konfiguracji w węzłach docelowych. Po opublikowaniu obu konfiguracji można wywołać metodę Start-DSCConfiguration –UseExisting w węźle docelowym.

Jeśli na przykład skompilowane zostały następujące dokumenty MOF konfiguracji w węźle tworzenia:

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

Konfiguracje należy opublikować i uruchomić w następujący sposób:

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...

Uwaga

Użytkownik z uruchomionym poleceniem cmdlet Publish-DSCConfiguration musi mieć uprawnienia administratora w węźle docelowym.

Częściowe konfiguracje w trybie ściągania

Konfiguracje częściowe można ściągnąć z co najmniej jednego serwera ściągania (aby uzyskać więcej informacji na temat serwerów ściągania, zobacz Windows PowerShell Desired State Configuration serwery ściągania. W tym celu należy skonfigurować narzędzie LCM w węźle docelowym, aby ściągnąć częściowe konfiguracje, a następnie nazwać i prawidłowo zlokalizować dokumenty konfiguracyjne na serwerach ściągania.

Konfigurowanie narzędzia LCM dla konfiguracji węzła ściągania

Aby skonfigurować narzędzie LCM do ściągania częściowych konfiguracji z serwera ściągania, należy zdefiniować serwer ściągania w bloku ConfigurationRepositoryWeb (dla serwera ściągania HTTP) lub ConfigurationRepositoryShare (dla serwera ściągania SMB). Następnie należy utworzyć bloki PartialConfiguration odwołujące się do serwera ściągania przy użyciu właściwości ConfigurationSource . Należy również utworzyć blok Ustawienia , aby określić, że narzędzie LCM używa trybu ściągania, oraz określić wartości ConfigurationNames lub ConfigurationID używane przez serwer ściągania i węzeł docelowy do identyfikowania konfiguracji. Poniższa meta-konfiguracja definiuje serwer ściągania HTTP o nazwie CONTOSO-PullSrv i dwie częściowe konfiguracje, które używają tego serwera ściągania.

Aby uzyskać więcej informacji na temat konfigurowania programu LCM przy użyciu configurationNames, zobacz Konfigurowanie klienta ściągania przy użyciu nazw konfiguracji. Aby uzyskać informacje na temat konfigurowania programu LCM przy użyciu identyfikatora konfiguracji, zobacz Konfigurowanie klienta ściągania przy użyciu identyfikatora konfiguracji.

Konfigurowanie programu LCM dla konfiguracji trybu ściągania przy użyciu nazw konfiguracji

[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'
        }
}

Konfigurowanie narzędzia LCM dla konfiguracji trybu ściągania przy użyciu identyfikatora 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

Konfiguracje częściowe można ściągnąć z więcej niż jednego serwera ściągania — wystarczy zdefiniować każdy serwer ściągania, a następnie odwołać się do odpowiedniego serwera ściągania w każdym bloku PartialConfiguration .

Po utworzeniu metakonfiguracji należy uruchomić go, aby utworzyć dokument konfiguracji (plik MOF), a następnie wywołać polecenie Set-DscLocalConfigurationManager , aby skonfigurować LCM.

Nazewnictwo i umieszczanie dokumentów konfiguracji na serwerze ściągania (ConfigurationNames)

Dokumenty konfiguracji częściowej należy umieścić w folderze określonym jako ConfigurationPath w web.config pliku serwera ściągania (zazwyczaj C:\Program Files\WindowsPowerShell\DscService\Configuration).

Nazewnictwo dokumentów konfiguracji na serwerze ściągania w programie PowerShell 5.1

Jeśli ściągasz tylko jedną konfigurację częściową z pojedynczego serwera ściągania, dokument konfiguracji może mieć dowolną nazwę. Jeśli ściągasz więcej niż jedną konfigurację częściową z serwera ściągania, dokument konfiguracji może mieć nazwę <ConfigurationName>.mof, gdzie ConfigurationName jest nazwą konfiguracji częściowej lub <ConfigurationName>.<NodeName>.mof, gdzie ConfigurationName jest nazwą konfiguracji częściowej, a NodeName jest nazwą węzła docelowego. Umożliwia to ściąganie konfiguracji z serwera ściągania Azure Automation DSC.

Nazewnictwo dokumentów konfiguracji na serwerze ściągania w programie PowerShell 5.0

Dokumenty konfiguracji muszą mieć następującą nazwę: ConfigurationName.mof, gdzie ConfigurationName jest nazwą konfiguracji częściowej. W naszym przykładzie dokumenty konfiguracji powinny mieć następującą nazwę:

ServiceAccountConfig.mof
ServiceAccountConfig.mof.checksum
SharePointConfig.mof
SharePointConfig.mof.checksum

Nazewnictwo i umieszczanie dokumentów konfiguracji na serwerze ściągania (ConfigurationID)

Dokumenty konfiguracji częściowej należy umieścić w folderze określonym jako ConfigurationPath w web.config pliku serwera ściągania (zazwyczaj C:\Program Files\WindowsPowerShell\DscService\Configuration). Dokumenty konfiguracji muszą mieć następującą nazwę: <ConfigurationName>.<ConfigurationID>.mof, gdzie ConfigurationName jest nazwą częściowej konfiguracji, a ConfigurationID jest identyfikatorem konfiguracji zdefiniowanym w narzędziu LCM w węźle docelowym. W naszym przykładzie dokumenty konfiguracji powinny mieć następującą nazwę:

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

Uruchamianie częściowych konfiguracji z serwera ściągania

Po skonfigurowaniu narzędzia LCM w węźle docelowym, a dokumenty konfiguracji zostały utworzone i prawidłowo nazwane na serwerze ściągania, węzeł docelowy ściągnie częściowe konfiguracje, połączy je i zastosuje wynikową konfigurację w regularnych odstępach czasu zgodnie z właściwością RefreshFrequencyMins właściwości LCM. Jeśli chcesz wymusić odświeżenie, możesz wywołać polecenie cmdlet Update-DscConfiguration , aby ściągnąć konfiguracje i zastosować je.

Konfiguracje częściowe w mieszanych trybach wypychania i ściągania

Można również mieszać tryby wypychania i ściągania dla konfiguracji częściowych. Oznacza to, że można mieć jedną częściową konfigurację, która jest ściągana z serwera ściągania, podczas gdy inna konfiguracja częściowa jest wypychana. Określ tryb odświeżania dla każdej konfiguracji częściowej zgodnie z opisem w poprzednich sekcjach. Na przykład poniższa meta_konfiguracja opisuje ten sam przykład z częściową ServiceAccountConfig konfiguracją w trybie ściągania i SharePointConfig częściową konfiguracją w trybie wypychania.

Mieszane tryby wypychania i ściągania przy użyciu 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'
        }

}

Mieszane tryby wypychania i ściągania przy użyciu identyfikatora 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

Należy pamiętać, że tryb RefreshMode określony w bloku Ustawienia to "Pull", ale tryb RefreshMode dla konfiguracji częściowej SharePointConfig to "Push".

Nazwij i znajdź pliki MOF konfiguracji zgodnie z powyższym opisem dla odpowiednich trybów odświeżania. Wywołaj metodę Publish-DSCConfiguration publikowania SharePointConfig konfiguracji częściowej i zaczekaj ServiceAccountConfig na ściągnięcie konfiguracji z serwera ściągania lub wymuś odświeżenie przez wywołanie polecenia Update-DscConfiguration.

Przykład konfiguracji częściowej 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

Przykład konfiguracji częściowej programu 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

Zobacz też

serwery ściągania Windows PowerShell Desired State Configuration

Konfigurowanie Configuration Manager lokalnego systemu Windows