Partilhar via


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.

Consulte também