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.