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
- Dans votre compte Automation, sélectionnez Configuration d’état (DSC).
- Sélectionnez l’onglet Configurations, puis sélectionnez le nom de la configuration à compiler.
- Sélectionnez Compiler.
- 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.
- 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.
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
Dans votre compte Automation, sélectionnez State configuration (DSC) sous Gestion de la configuration.
Dans la page State Configuration (DSC), sélectionnez l’onglet Configurations, puis Ajouter.
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.
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.
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
- Pour commencer, consultez Bien démarrer avec Azure Automation State Configuration.
- Pour découvrir comment compiler des configurations DSC pour pouvoir les affecter à des nœuds cibles, consultez Compiler des configurations DSC dans Azure Automation State Configuration.
- Pour obtenir des informations de référence sur les cmdlets PowerShell, consultez Az.Automation.
- Pour obtenir des informations sur les prix, consultez Tarification d’Azure Automation State Configuration.
- Pour obtenir un exemple d’utilisation de State Configuration dans un pipeline de déploiement continu, consultez Configurer un déploiement continu avec Chocolatey.