Partager via


Spécification des dépendances entre nœuds

S’applique à : Windows PowerShell 5.0

DSC fournit des ressources spéciales, WaitForAll, WaitForAny et WaitForSome , qui peuvent être utilisées dans les configurations pour spécifier des dépendances sur les configurations d’autres nœuds. Le comportement de ces ressources est le suivant :

  • WaitForAll : réussit si la ressource spécifiée est dans l’état souhaité sur tous les nœuds cibles définis dans la propriété NodeName .
  • WaitForAny : réussit si la ressource spécifiée est dans l’état souhaité sur au moins un des nœuds cibles définis dans la propriété NodeName .
  • WaitForSome : spécifie une propriété NodeCount en plus d’une propriété NodeName . La ressource réussit si elle est dans l’état souhaité sur un nombre minimal de nœuds (spécifié par NodeCount) défini par la propriété NodeName .

Syntaxe

Les ressources WaitForAll et WaitForAny partagent la même syntaxe. Remplacez <ResourceType> dans l’exemple ci-dessous par WaitForAny ou WaitForAll. Comme pour le mot-clé DependsOn, vous devrez formater le nom comme .[ResourceType]ResourceName Si la ressource appartient à une configuration distincte, incluez le ConfigurationName dans la chaîne [ResourceType]ResourceName::[ConfigurationName]::[ConfigurationName]formatée. Le NodeName est l’ordinateur, ou Node, sur lequel la ressource actuelle doit attendre.

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

La ressource WaitForSome a une syntaxe similaire à celle de l’exemple ci-dessus, mais ajoute la clé NodeCount . Le NodeCount indique le nombre de nœuds sur lesquels la ressource actuelle doit attendre.

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

Tous les WaitForXXXX partagent les clés de syntaxe suivantes.

Propriété Descriptif
RetryIntervalSec Nombre de secondes avant de réessayer. Le minimum est 1.
RetryCount Nombre maximal de réessays.
Limite d’accélérateur Nombre de machines à connecter simultanément. La valeur par défaut est New-CimSession la valeur par défaut.
Dépend de Indique que la configuration d’une autre ressource doit s’exécuter avant que cette ressource ne soit configurée. Pour plus d’informations, consultez DependsOn
PsDscRunAsCredential Reportez-vous à la section Utilisation de DSC avec les informations d’identification de l’utilisateur

Utilisation des ressources WaitForXXXX

Chaque ressource WaitForXXXX attend que les ressources spécifiées se terminent sur le nœud spécifié. D’autres ressources de la même configuration peuvent ensuite dépendre de la ressource WaitForXXXX à l’aide de la clé DependsOn .

Par exemple, dans la configuration suivante, le nœud cible attend que la ressource xADDomain se termine sur le nœud MyDC avec un nombre maximal de 30 tentatives, à des intervalles de 15 secondes, avant que le nœud cible puisse rejoindre le domaine.

Par défaut, les ressources WaitForXXX essaient une fois puis échouent. Bien que cela ne soit pas obligatoire, vous souhaiterez généralement spécifier un RetryCount et un 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'
        }
    }
}

Lorsque vous compilez la configuration, deux fichiers « .mof » sont générés. Appliquez les deux fichiers « .mof » aux nœuds cibles à l’aide de l’applet de commande Start-DSCConfiguration

Note

Les ressources WaitForXXX utilisent la gestion à distance Windows pour vérifier l’état des autres nœuds. Pour plus d’informations sur les exigences de port et de sécurité pour WinRM, consultez Considérations relatives à la sécurité de PowerShell Remoting.

Voir aussi