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

  1. À partir de votre compte Automation, dans le volet gauche, sélectionnez Variables sous Ressources partagées.
  2. Dans la page Variables, sélectionnez Ajouter une variable.
  3. 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.

Add variable to canvas

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.

Set simple variable

Étapes suivantes