Partage via


Compiler des configurations DSC dans Azure Automation State Configuration

Remarque

Azure Automation State Configuration sera mise hors service le 30 septembre 2027. Veuillez passer à Azure Machine Configuration avant cette date. Pour en savoir plus, consultez l’annonce du billet de blog. Le service Azure Machine Configuration combine les fonctionnalités d’Extension DSC, d’Azure Automation State Configuration, ainsi que les fonctionnalités les plus couramment demandées selon les commentaires des clients. Azure Machine Configuration inclut également la prise en charge des ordinateurs hybrides via des serveurs avec Arc.

Attention

Azure Automation DSC pour Linux a pris sa retraite le 30 septembre 2023. Pour plus d'informations, consultez Annonce.

Dans Azure Automation State Configuration, vous pouvez compiler des configurations DSC de plusieurs manières :

  • Service de compilation Azure State Configuration

    • Méthode pour débutant avec interface utilisateur interactive
    • Suivi aisé de l’état des tâches
  • Windows PowerShell

    • Appel à partir de Windows PowerShell sur la station de travail locale ou le service de build
    • Intégration avec le pipeline de test de développement
    • Fourniture de valeurs de paramètres complexes
    • Utilisation de données de nœud et non-nœud à l’échelle
    • Amélioration significative des performances

Vous pouvez également utiliser des modèles Azure Resource Manager avec l’extension Desired State Configuration (DSC) Azure pour envoyer (push) des configurations à vos machines virtuelles Azure. L’extension DSC d’Azure utilise l’infrastructure de l’agent Azure VM pour fournir, mettre en œuvre et créer des rapports sur les configurations DSC sur des machines virtuelles Azure. Pour plus d’informations sur la compilation à l’aide de modèles Azure Resource Manager, consultez Extension Desired State Configuration avec des modèles Azure Resource Manager.

Compiler une configuration DSC dans Azure State Configuration

Portail

  1. Dans votre compte Automation, sélectionnez Configuration d’état (DSC).
  2. Sélectionnez l’onglet Configurations, puis sélectionnez le nom de la configuration à compiler.
  3. Sélectionnez Compiler.
  4. Si la configuration n’a aucun paramètre, vous devez confirmer que vous souhaitez la compiler. Si la configuration a des paramètres, le volet Compiler la configuration s’ouvre et vous permet de fournir les valeurs des paramètres.
  5. La page Travail de compilation pour vous permettre de suivre l’état du travail de compilation. Vous pouvez également utiliser cette page pour suivre les configurations de nœuds (documents de configuration MOF) qui sont placées sur le serveur Pull d’Azure Automation State Configuration.

Azure PowerShell

Vous pouvez utiliser la commande Start-AzAutomationDscCompilationJob pour commencer la compilation avec Windows PowerShell. L’exemple de code suivant commence la compilation d’une configuration DSC appelée SampleConfig.

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

Start-AzAutomationDscCompilationJob renvoie un objet de tâche de compilation que vous pouvez utiliser pour suivre son état. Vous pouvez ensuite utiliser cet objet de travail de compilation avec Get-AzAutomationDscCompilationJob pour déterminer l’état du travail de compilation, et avec Get-AzAutomationDscCompilationJobOutput pour afficher ses flux (sortie). L’exemple suivant lance la compilation de la configuration SampleConfig, attend qu’elle prenne fin, puis affiche ses flux.

$CompilationJob = Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

while($null -eq $CompilationJob.EndTime -and $null -eq $CompilationJob.Exception)
{
    $CompilationJob = $CompilationJob | Get-AzAutomationDscCompilationJob
    Start-Sleep -Seconds 3
}

$CompilationJob | Get-AzAutomationDscCompilationJobOutput –Stream Any

Déclarer les paramètres de base

La déclaration de paramètres dans les configurations DSC, y compris les types de paramètres et les propriétés, fonctionne de la même manière que pour les runbooks Azure Automation. Pour en savoir plus sur les paramètres des runbooks, consultez Démarrage d’un runbook dans Azure Automation.

L’exemple suivant utilise les paramètres FeatureName et IsPresent pour déterminer les valeurs des propriétés dans la configuration du nœud ParametersExample.sample, générée pendant la compilation.

Configuration ParametersExample
{
    param(
        [Parameter(Mandatory=$true)]
        [string] $FeatureName,

        [Parameter(Mandatory=$true)]
        [boolean] $IsPresent
    )

    $EnsureString = 'Present'
    if($IsPresent -eq $false)
    {
        $EnsureString = 'Absent'
    }

    Node 'sample'
    {
        WindowsFeature ($FeatureName + 'Feature')
        {
            Ensure = $EnsureString
            Name   = $FeatureName
        }
    }
}

Vous pouvez compiler les configurations DSC qui utilisent des paramètres de base dans le portail Azure Automation State Configuration ou à l’aide d’Azure PowerShell.

Portail

Dans le portail, vous pouvez entrer des valeurs de paramètre après avoir cliqué sur Compiler.

Paramètres de compilation de configuration

Azure PowerShell

PowerShell a besoin des paramètres d’une table de hachage où la clé correspond au nom de paramètre et où la valeur est égale à la valeur du paramètre.

$Parameters = @{
    'FeatureName' = 'Web-Server'
    'IsPresent' = $False
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ParametersExample' -Parameters $Parameters

Pour plus d’informations sur la transmission d’objets PSCredential en tant que paramètres, consultez Ressources d’informations d’identification.

Compilez les configurations contenant des ressources composites dans Azure Automation

La fonctionnalité Ressources composites vous permet d’utiliser des configurations DSC en tant que ressources imbriquées à l’intérieur d’une configuration. Cette fonctionnalité permet d’appliquer plusieurs configurations à une même ressource. Consultez Ressources composites : utilisation d’une configuration DSC en tant que ressource pour en savoir plus sur les ressources composites.

Remarque

Pour que les configurations contenant des ressources composites se compilent correctement, vous devez d’abord importer dans Azure Automation toutes les ressources DSC sur lesquelles les ressources composites s’appuient. L’ajout d’une ressource composite DSC n’est pas différent de l’ajout d’un module PowerShell à Azure Automation. Le processus est documenté dans Gérer les modules dans Azure Automation.

Gérer ConfigurationData lors de la compilation de configurations dans Azure Automation

ConfigurationData est un paramètre DSC intégré qui vous permet de séparer la configuration structurelle de toute configuration spécifique de l’environnement lors de l’utilisation de PowerShell DSC. Pour plus d’informations, consultez Separating "What" from "Where" in PowerShell DSC.

Remarque

Lors de la compilation dans Azure Automation State Configuration, vous pouvez utiliser ConfigurationData dans Azure PowerShell, mais pas dans le portail Azure.

L’exemple de configuration DSC suivant utilise ConfigurationData via les mots clés $ConfigurationData et $AllNodes. Vous avez également besoin du module xWebAdministration pour cet exemple.

Configuration ConfigurationDataSample
{
    Import-DscResource -ModuleName xWebAdministration -Name MSFT_xWebsite

    Write-Verbose $ConfigurationData.NonNodeData.SomeMessage

    Node $AllNodes.Where{$_.Role -eq 'WebServer'}.NodeName
    {
        xWebsite Site
        {
            Name         = $Node.SiteName
            PhysicalPath = $Node.SiteContents
            Ensure       = 'Present'
        }
    }
}

Vous pouvez compiler la configuration DSC précédente avec Windows PowerShell. La script suivant ajoute deux configurations de nœud au serveur collecteur Azure Automation State Configuration : ConfigurationDataSample.MyVM1 et ConfigurationDataSample.MyVM3.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = 'MyVM1'
            Role = 'WebServer'
        },
        @{
            NodeName = 'MyVM2'
            Role = 'SQLServer'
        },
        @{
            NodeName = 'MyVM3'
            Role = 'WebServer'
        }
    )

    NonNodeData = @{
        SomeMessage = 'I love Azure Automation State Configuration and DSC!'
    }
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ConfigurationDataSample' -ConfigurationData $ConfigData

Utiliser des ressources dans Azure Automation pendant la compilation

Les références de ressources sont les mêmes dans Azure Automation State Configuration et les runbooks. Pour plus d’informations, consultez les articles suivants :

Ressources d’informations d’identification

Si une configuration dispose d’un paramètre qui spécifie un objet PSCredential, utilisez Get-AutomationPSCredential en passant le nom d’une ressource d’informations d’identification Azure Automation à la cmdlet afin de récupérer les informations d’identification. Azure Automation transmet les informations d’identification à la configuration.

Pour sécuriser les informations d'identification dans une configuration de nœud, chiffrez les informations d’identification dans le fichier .mof de configuration de nœud. Vous devez autoriser PowerShell DSC à générer des informations d’identification en texte brut lors de la génération MOF de configuration de nœud. PowerShell DSC ne sait pas qu’Azure Automation chiffre l’intégralité du fichier .mof après sa génération par une tâche de compilation.

Vous pouvez indiquer à la configuration DSC PowerShell que les informations d’identification peuvent être extraites en texte brut dans les fichiers .mof de configuration de nœud générés à l’aide des données de configuration. Vous devez passer PSDscAllowPlainTextPassword = $true par le biais de ConfigurationData pour chaque nom de bloc de nœuds qui s’affiche dans la configuration DSC et qui utilise les informations d’identification.

L’exemple suivant montre une configuration de l’état souhaité qui utilise une ressource d’informations d’identification Automation.

Configuration CredentialSample
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    $Cred = Get-AutomationPSCredential 'SomeCredentialAsset'

    Node $AllNodes.NodeName
    {
        File ExampleFile
        {
            SourcePath      = '\\Server\share\path\file.ext'
            DestinationPath = 'C:\destinationPath'
            Credential      = $Cred
        }
    }
}

Vous pouvez compiler la configuration DSC précédente avec PowerShell. Le code PowerShell suivant ajoute deux configurations de nœud au serveur collecteur Azure Automation State Configuration : CredentialSample.MyVM1 et CredentialSample.MyVM2.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = '*'
            PSDscAllowPlainTextPassword = $True
        },
        @{
            NodeName = 'MyVM1'
        },
        @{
            NodeName = 'MyVM2'
        }
    )
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'CredentialSample' -ConfigurationData $ConfigData

Remarque

Une fois la compilation terminée, il se peut que vous l’erreur suivante s’affiche The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. Vous pouvez ignorer ce message en toute sécurité.

Compiler une configuration DSC dans Windows PowerShell

Le processus de compilation des configurations DSC dans Windows PowerShell est inclus dans la documentation DSC PowerShell Écrire, compiler et appliquer une configuration. Vous pouvez exécuter ce processus à partir d’une station de travail de développeur ou dans un service de build tel qu’Azure DevOps. Vous pouvez ensuite importer les fichiers MOF générés par la compilation de la configuration dans le service Azure State Configuration.

La compilation dans Windows PowerShell offre également la possibilité de signer le contenu de configuration. L’agent DSC vérifie localement la configuration signée d’un nœud géré. Cette vérification garantit que la configuration appliquée au nœud provient d’une source autorisée.

Vous pouvez également importer des configurations de nœud qui ont été compilées en dehors d’Azure. Cette importation comprend la compilation à partir d’une station de travail de développeur ou dans un service comme Azure DevOps. Cette approche présente plusieurs avantages, comme les performances et la fiabilité.

Remarque

Un fichier de configuration de nœuds ne doit pas être supérieur à 1 Mo pour permettre à Azure Automation de l’importer.

Pour plus d’informations sur la signature des configurations de nœud, consultez Améliorations apportées à WMF 5.1 – Comment signer la configuration et le module.

Importer une configuration de nœuds dans le Portail Azure

  1. Dans votre compte Automation, sélectionnez State configuration (DSC) sous Gestion de la configuration.

  2. Dans la page State Configuration (DSC), sélectionnez l’onglet Configurations, puis Ajouter.

  3. Dans la page Importer, sélectionnez l’icône de dossier à côté du champ Fichier de configuration de nœud pour rechercher un fichier .mof de configuration de nœuds sur votre ordinateur local.

    Rechercher un fichier local

  4. Entrez un nom dans le champ Nom de la configuration. Ce nom doit correspondre au nom de la configuration à partir de laquelle la configuration de nœuds a été compilée.

  5. Cliquez sur OK.

Importer une configuration de nœuds avec Azure PowerShell

Vous pouvez utiliser la cmdlet Import-AzAutomationDscNodeConfiguration pour importer une configuration de nœuds dans votre compte Automation.

$importAzAutomationDscNodeConfigurationSplat = @{
    AutomationAccountName = 'MyAutomationAccount'
    ResourceGroupName = 'MyResourceGroup'
    ConfigurationName = 'MyNodeConfiguration'
    Path = 'C:\MyConfigurations\TestVM1.mof'
}
Import-AzAutomationDscNodeConfiguration @importAzAutomationDscNodeConfigurationSplat

Étapes suivantes