Gérer les variables dans Azure Automation
Les ressources de variables sont des valeurs disponibles pour tous les runbooks et configurations DSC de votre compte Automation. Vous pouvez les gérer à partir du portail Azure, à partir de PowerShell, au sein d’un runbook ou dans une configuration DSC.
Les variables Automation sont utiles pour les scénarios suivants :
Partage d’une valeur entre plusieurs runbooks ou configurations DSC.
Partage d’une valeur entre plusieurs tâches du même runbook ou de la même configuration DSC.
Gestion d’une valeur utilisée par des runbooks ou des configurations DSC à partir du portail ou de la ligne de commande PowerShell. Un ensemble d’éléments de configuration communs, comme la liste spécifique des noms de machines virtuelles, un groupe de ressources spécifique, un nom de domaine Active Directory, etc, constitue un exemple.
Azure Automation conserve les variables et les rend disponibles même en cas d’échec d’une configuration runbook ou DSC. Ce comportement permet à un runbook ou à une configuration DSC de définir une valeur par la suite utilisée par un autre runbook, ou par le même runbook ou la même configuration DSC lors de son exécution suivante.
Azure Automation stocke chaque variable chiffrée de manière sécurisée. Lorsque vous créez une variable, vous pouvez spécifier son mode de chiffrement et de stockage par Azure Automation sous la forme d’une ressource sécurisée. Après avoir créé la variable, vous ne pouvez pas modifier son état de chiffrement sans recréer la variable. Si vous avez des variables de compte Automation stockant des données sensibles qui ne sont pas encore chiffrées, vous devez les supprimer et les recréer en tant que variables chiffrées. Une suggestion Microsoft Defender pour le Cloud consiste à chiffrer toutes les variables Azure Automation, comme décrit dans Les variables de compte Automation doivent être chiffrées. Si vous avez des variables non chiffrées que vous voulez exclure de cette recommandation de sécurité, consultez Exempter une ressource des recommandations et du degré de sécurisation pour créer une règle d’exemption.
Remarque
Les ressources sécurisées dans Azure Automation incluent les informations d'identification, les certificats, les connexions et les variables chiffrées. Ces ressources sont chiffrées et stockées dans Azure Automation en utilisant une clé unique générée pour chaque compte Automation. Azure Automation stocke la clé dans le coffre de clés géré par le système. Avant de stocker une ressource sécurisée, Automation charge la clé à partir de Key Vault, puis l’utilise pour chiffrer la ressource.
Types de variable
Lorsque vous créez une variable avec le portail Azure, vous devez spécifier un type de données dans la liste déroulante afin que le portail puisse afficher le contrôle approprié pour l’entrée de la valeur de la variable. Voici les types de variables disponibles dans Azure Automation :
- Chaîne
- Entier
- Date/Heure
- Boolean
- Null
La variable n’est pas limitée au type de données spécifié. Vous devez définir la variable à l'aide de Windows PowerShell si vous souhaitez spécifier une valeur d'un type différent. Si vous indiquez Not defined
, la valeur de la variable est définie sur Null. Vous devez définir la valeur avec l’applet de commande Set-AzAutomationVariable ou l’applet de commande interne Set-AutomationVariable
. Vous utilisez Set-AutomationVariable
dans vos runbooks destinés à s’exécuter dans l’environnement de bac à sable Azure ou sur un Runbook Worker hybride Windows.
Vous ne pouvez pas utiliser le portail Azure pour créer ou modifier la valeur d’un type de variable complexe. Toutefois, vous pouvez fournir une valeur de n’importe quel type à l’aide de Windows PowerShell. Les types complexes sont récupérés sous la forme d’un Newtonsoft.Json.Linq.JProperty pour un type d’objet complexe au lieu d’un type PSObject PSCustomObject.
Vous pouvez stocker plusieurs valeurs dans une seule variable en créant un tableau ou une table de hachage, et en l'enregistrant sur la variable.
Remarque
Les variables de nom de machine virtuelle ne peuvent pas dépasser 80 caractères. Les variables de groupe de ressources ne peuvent pas dépasser 90 caractères. Voir Règles de nommage et restrictions pour les ressources Azure.
Applets de commande PowerShell pour accéder aux variables
Les applets de commande du tableau suivant créent et gèrent les variables Automation avec Windows PowerShell. Elles sont fournies avec les Modules Az.
Applet de commande | Description |
---|---|
Get-AzAutomationVariable | Récupère la valeur d'une variable existante. Si la valeur est un type simple, ce même type est récupéré. S’il s’agit d’un type complexe, le type PSCustomObject est récupéré. 1 |
New-AzAutomationVariable | Crée une variable et définit sa valeur. |
Remove-AzAutomationVariable | Supprime une variable existante. |
Set-AzAutomationVariable | Définit la valeur d'une variable existante. |
1 Vous ne pouvez pas utiliser cette cmdlet pour récupérer la valeur d’une variable chiffrée. La seule façon de procéder consiste à utiliser l’applet de commande interne Get-AutomationVariable
dans un runbook ou une configuration DSC. Par exemple, pour voir la valeur d’une variable chiffrée, vous pouvez créer un runbook pour obtenir cette variable, puis l’écrire dans le flux de sortie :
$encryptvar = Get-AutomationVariable -Name TestVariable
Write-output "The encrypted value of the variable is: $encryptvar"
Applets de commande internes pour accéder aux variables
Les applets de commande internes figurant dans le tableau suivant sont utilisées pour accéder aux variables dans vos runbooks et configurations DSC. Ces applets de commande sont fournies avec le module global Orchestrator.AssetManagement.Cmdlets
. Pour plus d’informations, consultez Applets de commande interne.
Cmdlet interne | Description |
---|---|
Get-AutomationVariable |
Récupère la valeur d'une variable existante. |
Set-AutomationVariable |
Définit la valeur d'une variable existante. |
Remarque
Évitez d’utiliser des variables dans le paramètre Name
de la cmdlet Get-AutomationVariable
dans un runbook ou une configuration DSC. L’utilisation d’une variable peut compliquer la détection des dépendances entre les runbooks et les variables Automation au moment de la conception.
Fonctions Python pour accéder aux variables
Les fonctions du tableau suivant sont utilisées pour accéder aux variables d’un runbook Python 2 et 3. Les runbooks Python 3 sont actuellement en préversion.
Fonctions Python | Description |
---|---|
automationassets.get_automation_variable |
Récupère la valeur d'une variable existante. |
automationassets.set_automation_variable |
Définit la valeur d'une variable existante. |
Remarque
Vous devez importer le module automationassets
en haut de votre runbook Python pour accéder aux fonctions des ressources.
Créer et obtenir une variable
Remarque
Si vous voulez supprimer le chiffrement d’une variable, vous devez supprimer la variable et la recréer non chiffrée.
Créer et obtenir une variable à l’aide du portail Azure
- À partir de votre compte Automation, dans le volet gauche, sélectionnez Variables sous Ressources partagées.
- Dans la page Variables, sélectionnez Ajouter une variable.
- Définissez les options dans la page Nouvelle variable puis sélectionnez Créer pour enregistrer la nouvelle variable.
Remarque
Une fois que vous avez enregistré une variable chiffrée, vous ne pouvez plus la voir dans le portail. Elle peut uniquement être mise à jour.
Créer et obtenir une variable dans Windows PowerShell
Votre runbook ou votre configuration DSC utilise l’applet de commande New-AzAutomationVariable
pour créer une variable et définir sa valeur initiale. Si la variable est chiffrée, l’appel doit utiliser le paramètre Encrypted
. Votre script peut récupérer la valeur de la variable avec Get-AzAutomationVariable
.
Remarque
Un script PowerShell ne peut pas récupérer une valeur chiffrée. La seule façon d’y parvenir consiste à utiliser l’applet de commande interne Get-AutomationVariable
.
L’exemple suivant montre comment créer une variable de chaîne, puis retourner sa valeur.
$rgName = "ResourceGroup01"
$accountName = "MyAutomationAccount"
$variableValue = "My String"
New-AzAutomationVariable -ResourceGroupName "ResourceGroup01"
-AutomationAccountName "MyAutomationAccount" -Name 'MyStringVariable' `
-Encrypted $false -Value 'My String'
$string = (Get-AzAutomationVariable -ResourceGroupName "ResourceGroup01" `
-AutomationAccountName "MyAutomationAccount" -Name 'MyStringVariable').Value
L’exemple suivant montre comment créer une variable de type complexe, puis récupérer ses propriétés. Dans ce cas, un objet de machine virtuelle issu de Get-AzVM est utilisé pour spécifier un sous-ensemble de ses propriétés.
$rgName = "ResourceGroup01"
$accountName = "MyAutomationAccount"
$vm = Get-AzVM -ResourceGroupName "ResourceGroup01" -Name "VM01" | Select Name, Location, Extensions
New-AzAutomationVariable -ResourceGroupName "ResourceGroup01" -AutomationAccountName "MyAutomationAccount" -Name "MyComplexVariable" -Encrypted $false -Value $vm
$vmValue = Get-AzAutomationVariable -ResourceGroupName "ResourceGroup01" `
-AutomationAccountName "MyAutomationAccount" -Name "MyComplexVariable"
$vmName = $vmValue.Value.Name
$vmTags = $vmValue.Value.Tags
Exemples de runbook textuel
Les exemples suivants montrent comment définir et récupérer une variable dans un runbook textuel. Cet exemple suppose que des variables entières nommées numberOfIterations et numberOfRunnings ainsi qu’une variable de chaîne nommée sampleMessage ont été créées.
$rgName = "ResourceGroup01"
$accountName = "MyAutomationAccount"
$numberOfIterations = Get-AutomationVariable -Name "numberOfIterations"
$numberOfRunnings = Get-AutomationVariable -Name "numberOfRunnings"
$sampleMessage = Get-AutomationVariable -Name "sampleMessage"
Write-Output "Runbook has been run $numberOfRunnings times."
for ($i = 1; $i -le $numberOfIterations; $i++) {
Write-Output "$i`: $sampleMessage"
}
Set-AutomationVariable -Name numberOfRunnings -Value ($numberOfRunnings += 1)
Exemples de runbooks graphiques
Dans un runbook graphique, vous pouvez ajouter des activités pour les cmdlets internes Get-AutomationVariable ou Set-AutomationVariable. Il vous suffit de cliquer avec le bouton droit sur chaque variable dans le volet Bibliothèque de l’éditeur graphique, puis de sélectionner l’activité souhaitée.
L’image suivante montre des exemples d’activité pour mettre à jour une variable avec une valeur simple dans un runbook graphique. Dans cet exemple, l’activité de Get-AzVM
récupère une seule machine virtuelle Azure et enregistre le nom de l’ordinateur dans une variable de chaîne Automation existante. Peu importe si le lien est un pipeline ou une séquence, car le code n’attend qu’un objet unique dans la sortie.
Étapes suivantes
Pour en savoir plus sur les applets de commande utilisées pour accéder aux variables, consultez Gérer les modules dans Azure Automation.
Pour obtenir des informations générales sur les runbooks, consultez Exécution d’un runbook dans Azure Automation.
Pour obtenir des informations détaillées sur les configurations DSC, consultez Vue d’ensemble d’Azure Automation State Configuration.