Especificación de dependencias entre nodos

Se aplica a: Windows PowerShell 5.0

DSC proporciona recursos especiales, WaitForAll, WaitForAny y WaitForSome, que se pueden usar en configuraciones para especificar las dependencias en configuraciones de otros nodos. El comportamiento de estos recursos es el siguiente:

  • WaitForAll: se ejecuta si el recurso especificado está en el estado deseado en todos los nodos de destino definidos en la propiedad NodeName.
  • WaitForAny: se ejecuta si el recurso especificado está en el estado deseado en al menos uno de los nodos de destino definidos en la propiedad NodeName.
  • WaitForSome: especifica una propiedad NodeCount además de NodeName. El recurso se ejecuta si está en el estado deseado en un número mínimo de nodos (especificado por NodeCount) definido por la propiedad NodeName.

Syntax

Los recursos WaitForAll y WaitForAny comparten la misma sintaxis. Reemplace <ResourceType> en el ejemplo siguiente por WaitForAny o WaitForAll. Al igual que la palabra clave DependsOn, el nombre debe presentar el formato [ResourceType]ResourceName. Si el recurso pertenece a otra configuración, incluya el valor de ConfigurationName en la cadena con formato [ResourceType]ResourceName::[ConfigurationName]::[ConfigurationName]. El NodeName es el equipo, o nodo, en el que debe esperar el recurso actual.

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

El recurso WaitForSome tiene una sintaxis similar al ejemplo anterior, pero agrega la clave NodeCount. NodeCount indica cuántos nodos debe esperar el recurso actual.

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

Todos los valores de WaitForXXXX comparten las claves de la sintaxis siguiente.

Propiedad. Descripción
RetryIntervalSec El número de segundos antes de reintentar la operación. El valor mínimo es 1.
RetryCount El número máximo de reintentos.
ThrottleLimit El número de máquinas que se pueden conectar de forma simultánea. El valor predeterminado es New-CimSession.
DependsOn Indica que la configuración de otro recurso debe ejecutarse antes de que se configure este recurso. Para obtener más información, vea DependsOn
PsDscRunAsCredential Consulte el artículo sobre el uso de DSC con credenciales de usuario

Uso de recursos WaitForXXXX

Cada recurso WaitForXXXX espera a que se completen los recursos especificados en el nodo especificado. Otros recursos de la misma configuración pueden entonces depender del recurso WaitForXXXX usando la clave DependsOn.

Por ejemplo, en la configuración siguiente, el nodo de destino está esperando que el recurso xADDomain finalice en el nodo MyDC con un número máximo de 30 reintentos, a intervalos de 15 segundos, antes de que el nodo de destino pueda unirse al dominio.

De manera predeterminada, los recursos de WaitForXXX lo intentan una vez y después se produce un error. Aunque no es necesario, normalmente la intención será especificar un valor para RetryCount y otro para 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'
        }
    }
}

Cuando se compila la configuración, se generan dos archivos ".mof". Aplique ambos archivos ".mof" a los nodos de destino mediante el cmdlet Start-DSCConfiguration

Nota

Los recursos WaitForXXX usan Administración remota de Windows para comprobar el estado de otros nodos. Para obtener más información sobre los requisitos de seguridad y puerto de WinRM, vea Consideraciones de seguridad de comunicación remota de PowerShell.

Consulte también