Partager via


Utilisation des données de configuration dans DSC

S’applique à : Windows PowerShell 4.0, Windows PowerShell 5.0

À l’aide du paramètre DSC ConfigurationData intégré, vous pouvez définir des données qui peuvent être utilisées dans une configuration. Cela vous permet de créer une configuration unique qui peut être utilisée pour plusieurs nœuds ou pour différents environnements. Par exemple, si vous développez une application, vous pouvez utiliser une configuration pour les environnements de développement et de production, et utiliser les données de configuration pour spécifier les données de chaque environnement.

Cette rubrique décrit la structure de la table de hachage ConfigurationData . Pour obtenir des exemples d’utilisation des données de configuration, consultez Séparation des données de configuration et d’environnement.

Le paramètre commun ConfigurationData

Une configuration DSC prend un paramètre commun, ConfigurationData, que vous spécifiez lorsque vous compilez la configuration. Pour plus d’informations sur la compilation des configurations, reportez-vous à la section Configurations DSC.

Le paramètre ConfigurationData est une table de hachage qui doit avoir au moins une clé nommée AllNodes. Il peut également avoir une ou plusieurs autres touches.

Note

Les exemples de cette rubrique utilisent une seule clé supplémentaire (autre que la clé AllNodes nommée) nommée NonNodeData, mais vous pouvez inclure n’importe quel nombre de clés supplémentaires et les nommer comme vous le souhaitez.

$MyData =
@{
    AllNodes = @()
    NonNodeData = ""
}

La valeur de la clé AllNodes est un tableau. Chaque élément de ce tableau est également une table de hachage qui doit avoir au moins une clé nommée NodeName :

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName = "VM-1"
        },


        @{
            NodeName = "VM-2"
        },


        @{
            NodeName = "VM-3"
        }
    );

    NonNodeData = ""
}

Vous pouvez également ajouter d’autres clés à chaque table de hachage :

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName = "VM-1"
            Role     = "WebServer"
        },


        @{
            NodeName = "VM-2"
            Role     = "SQLServer"
        },


        @{
            NodeName = "VM-3"
            Role     = "WebServer"
        }
    );

    NonNodeData = ""
}

Pour appliquer une propriété à tous les nœuds, vous pouvez créer un membre du tableau AllNodes dont le NodeName est .* Par exemple, pour donner une LogPath propriété à chaque nœud, vous pouvez procéder comme suit :

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName     = "*"
            LogPath      = "C:\Logs"
        },


        @{
            NodeName     = "VM-1"
            Role         = "WebServer"
            SiteContents = "C:\Site1"
            SiteName     = "Website1"
        },


        @{
            NodeName     = "VM-2"
            Role         = "SQLServer"
        },


        @{
            NodeName     = "VM-3"
            Role         = "WebServer"
            SiteContents = "C:\Site2"
            SiteName     = "Website3"
        }
    );
}

Cela équivaut à ajouter une propriété avec un nom de LogPath avec une valeur de "C:\Logs" à chacun des autres blocs (VM-1, VM-2, et VM-3).

Définition de la table de hachage ConfigurationData

Vous pouvez définir ConfigurationData soit en tant que variable dans le même fichier de script qu’une configuration (comme dans nos exemples précédents), soit dans un fichier distinct .psd1 . Pour définir ConfigurationData dans un .psd1 fichier, créez un fichier qui contient uniquement la table de hachage qui représente les données de configuration.

Par exemple, vous pouvez créer un fichier nommé MyData.psd1 avec le contenu suivant :

@{
    AllNodes =
    @(
        @{
            NodeName    = 'VM-1'
            FeatureName = 'Web-Server'
        },

        @{
            NodeName    = 'VM-2'
            FeatureName = 'Hyper-V'
        }
    )
}

Compilation d’une configuration à l’aide de données de configuration

Pour compiler une configuration pour laquelle vous avez défini des données de configuration, vous transmettez les données de configuration en tant que valeur du paramètre ConfigurationData .

Cela créera un fichier MOF pour chaque entrée du tableau AllNodes . Chaque fichier MOF sera nommé avec la propriété de l’entrée NodeName de tableau correspondante.

Par exemple, si vous définissez les données de configuration comme dans le MyData.psd1 fichier ci-dessus, la compilation d’une configuration créera les deux VM-1.mof fichiers et VM-2.mof .

Compilation d’une configuration avec des données de configuration à l’aide d’une variable

Pour utiliser des données de configuration définies en tant que variable dans le même .ps1 fichier que la configuration, vous devez passer le nom de la variable en tant que valeur du paramètre ConfigurationData lors de la compilation de la configuration :

MyDscConfiguration -ConfigurationData $MyData

Compilation d’une configuration avec des données de configuration à l’aide d’un fichier de données

Pour utiliser les données de configuration définies dans un fichier .psd1, vous devez transmettre le chemin d’accès et le nom de ce fichier en tant que valeur du paramètre ConfigurationData lors de la compilation de la configuration :

MyDscConfiguration -ConfigurationData .\MyData.psd1

Utilisation des variables ConfigurationData dans une configuration

DSC fournit les variables spéciales suivantes qui peuvent être utilisées dans un script de configuration :

  • $AllNodes fait référence à l’ensemble des nœuds définis dans ConfigurationData. Vous pouvez filtrer la collection AllNodes à l’aide de . Où() et . ForEach().
  • ConfigurationData fait référence à l’intégralité de la table de hachage qui est transmise en tant que paramètre lors de la compilation d’une configuration.
  • MyTypeName contient le nom de configuration dans lequel la variable est utilisée. Par exemple, dans la configuration MyDscConfiguration, le $MyTypeName aura une valeur de MyDscConfiguration.
  • Node fait référence à une entrée particulière de la collection AllNodes après son filtrage à l’aide de . Où() ou . ForEach().
    • Vous pouvez en savoir plus sur ces méthodes dans about_arrays

Utilisation de données non noeudiques

Comme nous l’avons vu dans les exemples précédents, la table de hachage ConfigurationData peut avoir une ou plusieurs clés en plus de la clé AllNodes requise. Dans les exemples de cette rubrique, nous n’avons utilisé qu’un seul nœud supplémentaire et l’avons NonNodeDatanommé . Cependant, vous pouvez définir n’importe quel nombre de clés supplémentaires et les nommer comme vous le souhaitez.

Pour obtenir un exemple d’utilisation de données non noeudales, consultez Séparation des données de configuration et d’environnement.

Voir aussi