Especificar dependências entre nós
Aplica-se a: Windows PowerShell 5.0
O DSC fornece recursos especiais, WaitForAll, WaitForAny e WaitForSome que podem ser utilizados em configurações para especificar dependências de configurações noutros nós. O comportamento destes recursos é o seguinte:
- WaitForAll: é bem-sucedido se o recurso especificado estiver no estado pretendido em todos os nós de destino definidos na propriedade NodeName .
- WaitForAny: é bem-sucedido se o recurso especificado estiver no estado pretendido em, pelo menos, um dos nós de destino definidos na propriedade NodeName .
- WaitForSome: especifica uma propriedade NodeCount para além de uma propriedade NodeName . O recurso é bem-sucedido se o recurso estiver no estado pretendido num número mínimo de nós (especificado por NodeCount) definido pela propriedade NodeName .
Syntax
Os recursos WaitForAll e WaitForAny partilham a mesma sintaxe. Substitua <ResourceType>
no exemplo abaixo por WaitForAny ou WaitForAll. Tal como a palavra-chave DependsOn , terá de formatar o nome como [ResourceType]ResourceName
. Se o recurso pertencer a uma Configuração separada, inclua o ConfigurationName na cadeia formatada [ResourceType]ResourceName::[ConfigurationName]::[ConfigurationName]
. O NodeName é o computador, ou Node, no qual o recurso atual deve aguardar.
<ResourceType> [string] #ResourceName
{
ResourceName = [string]
NodeName = [string]
[ DependsOn = [string[]] ]
[ PsDscRunAsCredential = [PSCredential]]
[ RetryCount = [Uint32] ]
[ RetryIntervalSec = [Uint64] ]
[ ThrottleLimit = [Uint32]]
}
O recurso WaitForSome tem uma sintaxe semelhante ao exemplo acima, mas adiciona a chave NodeCount . A NodeCount indica quantos Nós o recurso atual deve aguardar.
WaitForSome [String] #ResourceName
{
NodeCount = [UInt32]
NodeName = [string[]]
ResourceName = [string]
[DependsOn = [string[]]]
[PsDscRunAsCredential = [PSCredential]]
[RetryCount = [UInt32]]
[RetryIntervalSec = [UInt64]]
[ThrottleLimit = [UInt32]]
}
Todas as teclas de sintaxe WaitForXXXX partilham as seguintes.
Propriedade | Descrição |
---|---|
RetryIntervalSec | O número de segundos antes de tentar novamente. O mínimo é 1. |
RetryCount | O número máximo de vezes a repetir. |
LimitaçãoLimitir | Número de máquinas a ligar em simultâneo. A predefinição é New-CimSession predefinida. |
DependsOn | Indica que a configuração de outro recurso tem de ser executada antes de este recurso ser configurado. Para obter mais informações, veja DependsOn |
PsDscRunAsCredential | Veja Utilizar o DSC com Credenciais de Utilizador |
Utilizar recursos WaitForXXXX
Cada recurso WaitForXXXX aguarda que os recursos especificados sejam concluídos no Nó especificado. Outros recursos na mesma Configuração podem então depender do recurso WaitForXXXX com a chave DependsOn .
Por exemplo, na seguinte configuração, o nó de destino está a aguardar que o recurso xADDomain termine no nó MyDC com o número máximo de 30 repetições, em intervalos de 15 segundos, antes de o nó de destino poder aderir ao domínio.
Por predefinição, os recursos WaitForXXX tentam uma vez e, em seguida, falham. Embora não seja necessário, normalmente irá querer especificar uma RetryCount e 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'
}
}
}
Quando compila a Configuração, são gerados dois ficheiros ".mof". Aplicar ambos os ficheiros ".mof" aos Nós de destino com o cmdlet Start-DSCConfiguration
Nota
Os recursos waitForXXX utilizam a Gestão Remota do Windows para verificar o estado de outros Nós. Para obter mais informações sobre os requisitos de porta e segurança do WinRM, veja Considerações de Segurança remotas do PowerShell.