Określanie zależności między węzłami

Dotyczy: Windows PowerShell 5.0

Rozszerzenie DSC udostępnia specjalne zasoby, WaitForAll, WaitForAny i WaitForSome, które mogą być używane w konfiguracjach do określania zależności konfiguracji w innych węzłach. Zachowanie tych zasobów jest następujące:

  • WaitForAll: kończy się powodzeniem, jeśli określony zasób znajduje się w żądanym stanie we wszystkich węzłach docelowych zdefiniowanych we właściwości NodeName .
  • WaitForAny: kończy się powodzeniem, jeśli określony zasób znajduje się w żądanym stanie co najmniej jednego z węzłów docelowych zdefiniowanych we właściwości NodeName .
  • WaitForSome: określa właściwość NodeCount oprócz właściwości NodeName . Zasób kończy się powodzeniem, jeśli zasób znajduje się w żądanym stanie w minimalnej liczbie węzłów (określonej przez element NodeCount) zdefiniowanej przez właściwość NodeName .

Składnia

Zasoby WaitForAll i WaitForAny mają taką samą składnię. Zastąp element <ResourceType> w poniższym przykładzie ciągiem WaitForAny lub WaitForAll. Podobnie jak słowo kluczowe DependsOn , należy sformatować nazwę jako [ResourceType]ResourceName. Jeśli zasób należy do oddzielnej konfiguracji, uwzględnij parametr ConfigurationName w sformatowanym ciągu [ResourceType]ResourceName::[ConfigurationName]::[ConfigurationName]. NodeName to komputer lub węzeł, na którym powinien czekać bieżący zasób.

<ResourceType> [string] #ResourceName
{
    ResourceName = [string]
    NodeName = [string]
    [ DependsOn = [string[]] ]
    [ PsDscRunAsCredential = [PSCredential]]
    [ RetryCount = [Uint32] ]
    [ RetryIntervalSec = [Uint64] ]
    [ ThrottleLimit = [Uint32]]
}

Zasób WaitForSome ma podobną składnię do powyższego przykładu, ale dodaje klucz NodeCount . WęzełCount wskazuje, ile węzłów ma czekać bieżący zasób.

WaitForSome [String] #ResourceName
{
    NodeCount = [UInt32]
    NodeName = [string[]]
    ResourceName = [string]
    [DependsOn = [string[]]]
    [PsDscRunAsCredential = [PSCredential]]
    [RetryCount = [UInt32]]
    [RetryIntervalSec = [UInt64]]
    [ThrottleLimit = [UInt32]]
}

Wszystkie waitForXXXX współużytkuje następujące klucze składni.

Właściwość Opis
RetryIntervalSec Liczba sekund przed ponowną próbą. Minimalna wartość to 1.
RetryCount Maksymalna liczba ponownych prób.
Ograniczanie przepustowościLimit Liczba maszyn do jednoczesnego łączenia. Wartość domyślna to New-CimSession domyślna.
Dependson Wskazuje, że przed skonfigurowaniem tego zasobu należy uruchomić konfigurację innego zasobu. Aby uzyskać więcej informacji, zobacz DependsOn
PsDscRunAsCredential Zobacz Using DSC with User Credentials (Używanie rozszerzenia DSC z poświadczeniami użytkownika)

Korzystanie z zasobów WaitForXXXX

Każdy zasób WaitForXXXX czeka na ukończenie określonych zasobów w określonym węźle. Inne zasoby w tej samej konfiguracji mogą wtedy zależeć od zasobu WaitForXXXX przy użyciu klucza DependsOn .

Na przykład w poniższej konfiguracji węzeł docelowy oczekuje na zakończenie zasobu xADDomain w węźle MyDC z maksymalną liczbą ponownych prób wynoszącą 30 ponownych prób w 15-sekundowych odstępach czasu, zanim węzeł docelowy będzie mógł dołączyć do domeny.

Domyślnie zasoby WaitForXXX próbują jednorazowo, a następnie kończą się niepowodzeniem. Chociaż nie jest to wymagane, zazwyczaj należy określić retryCount i RetryIntervalSec.

Configuration JoinDomain
{
    Import-DSCResource -ModuleName xComputerManagement, xActiveDirectory

    Node myDC
    {
        WindowsFeature InstallAD
        {
            Ensure = 'Present'
            Name = 'AD-Domain-Services'
        }

        xADDomain NewDomain
        {
            DomainName = 'Contoso.com'
            DomainAdministratorCredential = (Get-Credential)
            SafemodeAdministratorPassword = (Get-Credential)
            DatabasePath = "C:\Windows\NTDS"
            LogPath = "C:\Windows\NTDS"
            SysvolPath = "C:\Windows\Sysvol"
        }
    }

    Node myDomainJoinedServer
    {
        WaitForAll DC
        {
            ResourceName      = '[xADDomain]NewDomain'
            NodeName          = 'MyDC'
            RetryIntervalSec  = 15
            RetryCount        = 30
        }

        xComputer JoinDomain
        {
            Name             = 'myPC'
            DomainName       = 'Contoso.com'
            Credential       = (Get-Credential)
            DependsOn        ='[WaitForAll]DC'
        }
    }
}

Podczas kompilowania konfiguracji są generowane dwa pliki mof. Zastosuj oba pliki .mof" do węzłów docelowych przy użyciu polecenia cmdlet Start-DSCConfiguration

Uwaga

Zasoby WaitForXXX używają zdalnego zarządzania systemem Windows, aby sprawdzić stan innych węzłów. Aby uzyskać więcej informacji na temat wymagań dotyczących portów i zabezpieczeń usługi WinRM, zobacz Zagadnienia dotyczące zabezpieczeń komunikacji zdalnej programu PowerShell.

Zobacz też