Compiler des configurations DSC dans Azure Automation State Configuration

Remarque

Avant d’activer Automation State Configuration, sachez qu’une version plus récente de DSC est désormais en disponibilité générale, managée par une fonctionnalité d’Azure Policy nommée configuration Invité. Le service de configuration invité combine les fonctionnalités d’Extension DSC, d’Azure Automation State Configuration, ainsi que les fonctionnalités les plus couramment demandées par les commentaires des clients. La configuration invité comprend également une prise en charge d’ordinateur hybride via des serveurs avec Arc.

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, cliquez sur Configuration d’état (DSC).
  2. Cliquez sur l’onglet Configurations, puis cliquez sur le nom de la configuration à compiler.
  3. Cliquez sur 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 panneau Compiler la configuration s’ouvre et vous permet de fournir la valeur 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 démarre la compilation de la configuration SampleConfig, attend qu’elle soit terminée, 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. Consultez Démarrage d’un runbook dans Azure Automation pour en savoir plus sur les paramètres de runbooks.

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.

Configuration compile parameters

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 rubriques suivantes :

Ressources d’informations d’identification

Les configurations DSC dans Azure Automation peuvent référencer des ressources d’informations d’identification Automation avec la cmdlet Get-AutomationPSCredential. Si une configuration a un paramètre qui spécifie un objet PSCredential, utilisez Get-AutomationPSCredential en passant le nom de la chaîne d’une ressource d’informations d’identification Azure Automation à l’applet de commande afin de récupérer les informations d’identification. Ensuite, utilisez cet objet pour le paramètre nécessitant l’objet PSCredential. En arrière-plan, la ressource d’informations d’identification Azure Automation portant le même nom est récupérée et transmise à la configuration. L’exemple ci-dessous illustre ce scénario.

Conserver les informations d’identification en sûreté dans les configurations de nœud (documents de configuration MOF) nécessite le chiffrement des 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 du fichier 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 le biais d’un travail de compilation.

Vous pouvez indiquer à la configuration DSC PowerShell que vous êtes d’accord pour que les informations d’identification soient extraites en texte brut dans les fichiers MOF de configuration de nœud générés en utilisant ConfigurationData. 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

Lorsque la compilation est terminée, vous pouvez recevoir le message d'erreur The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. Vous pouvez sans risque ignorer ce message.

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 les configurations de nœud (fichiers MOF) qui ont été compilées hors 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, cliquez sur State configuration (DSC) sous Gestion de la configuration.

  2. Dans la page State Configuration (DSC), cliquez sur l’onglet Configurations, puis sur Ajouter.

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

    Browse for local file

  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.

Import-AzAutomationDscNodeConfiguration -AutomationAccountName 'MyAutomationAccount' -ResourceGroupName 'MyResourceGroup' -ConfigurationName 'MyNodeConfiguration' -Path 'C:\MyConfigurations\TestVM1.mof'

Étapes suivantes