Gestire variabili in Automazione di Azure

Gli asset di tipo variabile sono valori disponibili per tutti i runbook e le configurazioni DSC nell'account di Automazione. È possibile gestirli dal portale di Azure, da PowerShell, all'interno di un runbook o in una configurazione DSC.

Le variabili di automazione sono utili per gli scenari seguenti:

  • Condivisione di un valore tra più runbook o configurazioni DSC.

  • Condivisione di un valore tra più processi dello stesso runbook o configurazione DSC.

  • Gestione di un valore usato dai runbook o dalle configurazioni DSC dal portale o dalla riga di comando di PowerShell. Un esempio è un set di elementi di configurazione comuni, ad esempio un elenco specifico di nomi di macchine virtuali, un gruppo di risorse specifico, un nome di dominio AD e altro ancora.

Automazione di Azure salva in modo permanente le variabili e le rende disponibili anche in caso di errore per un runbook o una configurazione DSC. Questo comportamento consente a un runbook o a una configurazione DSC di impostare un valore che viene quindi usato da un altro runbook o dallo stesso runbook o dalla stessa configurazione DSC alla successiva esecuzione.

Automazione di Azure archivia in modo sicuro ogni variabile crittografata. Quando si crea una variabile, è possibile specificarne la crittografia e l'archiviazione Automazione di Azure come asset sicuro. Dopo aver creato la variabile, non è possibile cambiarne lo stato di crittografia senza crearla nuovamente. Se sono disponibili variabili dell'account di Automazione usate per archiviare dati sensibili che non sono già crittografati, è necessario eliminarle e ricrearle come variabili crittografate. È consigliabile Microsoft Defender per il cloud crittografare tutte le variabili di Automazione di Azure come descritto in Variabili dell'account di Automazione da crittografare. Se si vogliono escludere alcune variabili non crittografate da questa raccomandazione di sicurezza, vedere Esentare una risorsa dalle raccomandazioni e dal punteggio di sicurezza per creare una regola di esenzione.

Nota

Gli asset sicuri in Automazione di Azure includono credenziali, certificati, connessioni e variabili crittografate. Tali asset vengono crittografati e archiviati in Automazione di Azure usando una chiave univoca generata per ogni account di Automazione. Automazione di Azure memorizza la chiave nel Key Vault gestito dal sistema. Prima di archiviare un asset sicuro, Automazione carica la chiave da Key Vault e quindi la usa per crittografare l'asset.

Tipi di variabili

Quando si crea una variabile con il portale di Azure, è necessario selezionare un tipo di dati nell'elenco a discesa, in modo che nel portale sia visualizzato il controllo appropriato per immettere il valore della variabile. Di seguito sono riportati i tipi di variabile disponibili in Automazione di Azure:

  • Stringa
  • Intero
  • Data/Ora
  • Boolean
  • Null

La variabile non è limitata al tipo di dati specificato. È necessario impostarla usando Windows PowerShell se si vuole specificare un valore di tipo diverso. Se si indica Not defined, il valore della variabile viene impostato su Null. È necessario impostare il valore con il cmdlet Set-AzAutomationVariable o il cmdlet interno Set-AutomationVariable. Usare nei Set-AutomationVariable runbook destinati all'esecuzione nell'ambiente sandbox di Azure o in un ruolo di lavoro ibrido per runbook di Windows.

Non è possibile usare il portale di Azure per creare o modificare il valore per un tipo di variabile complesso. Tuttavia, è possibile fornire un valore di qualsiasi tipo usando Windows PowerShell. I tipi complessi vengono recuperati come Newtonsoft.Json.Linq.JProperty per un tipo di oggetto complesso anziché come tipo PSObject PSCustomObject.

È possibile archiviare più valori in una singola variabile creando una matrice o una tabella hash e salvandola nella variabile.

Nota

Le variabili del nome della macchina virtuale possono avere una lunghezza massima di 80 caratteri. Le variabili dei gruppi di risorse possono contenere un massimo di 90 caratteri. Vedere Regole di denominazione e restrizioni per le risorse di Azure.

Cmdlet di PowerShell per accedere alle variabili

I cmdlet nella tabella seguente vengono usati per creare e gestire le variabili di Automazione con PowerShell. Sono inclusi nei moduli Az.

Cmdlet Descrizione
Get-AzAutomationVariable Recupera il valore di una variabile esistente. Se il valore è di tipo semplice, verrà recuperato lo stesso tipo. Se è un tipo complesso, viene recuperato un tipo PSCustomObject. 1
New-AzAutomationVariable Crea una nuova variabile e ne imposta il valore.
Remove-AzAutomationVariable Rimuove una variabile esistente.
Set-AzAutomationVariable Imposta il valore di una variabile esistente.

1 Non è possibile usare questo cmdlet per recuperare il valore di una variabile crittografata. L'unico modo per eseguire questa operazione consiste nell'usare il cmdlet Get-AutomationVariable interno in un runbook o una configurazione DSC. Ad esempio, per visualizzare il valore di una variabile crittografata, è possibile creare un runbook per ottenere la variabile e quindi scriverla nel flusso di output:

$encryptvar = Get-AutomationVariable -Name TestVariable
Write-output "The encrypted value of the variable is: $encryptvar"

Cmdlet interni per accedere alle variabili

I cmdlet interni nella tabella seguente vengono usati per accedere alle variabili nei runbook e nelle configurazioni DSC. Questi cmdlet sono inclusi nel modulo globale Orchestrator.AssetManagement.Cmdlets. Per altre informazioni, vedere Cmdlet interni.

Cmdlet interno Descrizione
Get-AutomationVariable Recupera il valore di una variabile esistente.
Set-AutomationVariable Imposta il valore di una variabile esistente.

Nota

Evitare di usare variabili nel Name parametro del Get-AutomationVariable cmdlet in un runbook o in una configurazione DSC. L'uso di una variabile può complicare l'individuazione delle dipendenze tra runbook e variabili di automazione in fase di progettazione.

Funzioni Python per accedere alle variabili

Le funzioni nella tabella seguente vengono usate per accedere alle variabili in un runbook Python 2 e 3. I runbook Python 3 sono attualmente in anteprima.

Funzioni Python Descrizione
automationassets.get_automation_variable Recupera il valore di una variabile esistente.
automationassets.set_automation_variable Imposta il valore di una variabile esistente.

Nota

È necessario importare il modulo automationassets nella parte superiore del runbook Python per accedere alle funzioni dell'asset.

Creare e ottenere una variabile

Nota

Se si vuole rimuovere la crittografia per una variabile, è necessario eliminare la variabile e ricrearla come non crittografata.

Creare e ottenere una variabile usando il portale di Azure

  1. Nell'account di Automazione, nel riquadro a sinistra selezionare Variabili in Risorse condivise.
  2. Nella pagina Variabili selezionare Aggiungi una variabile.
  3. Completare le opzioni nella pagina Nuova variabile e quindi selezionare Crea per salvare la nuova variabile.

Nota

Dopo averla salvata, una variabile crittografata non può essere visualizzata nel portale. Può essere solo aggiornata.

Creare e ottenere una variabile in Windows PowerShell

Il runbook o la configurazione DSC usa il cmdlet New-AzAutomationVariable per creare una nuova variabile e impostarne il valore iniziale. Se la variabile è crittografata, la chiamata deve usare il parametro Encrypted. Lo script può recuperare il valore della variabile usando Get-AzAutomationVariable.

Nota

Uno script di PowerShell non può recuperare un valore crittografato. L'unico modo per eseguire questa operazione consiste nell'usare il cmdlet Get-AutomationVariable interno.

L'esempio seguente illustra come creare una variabile stringa e quindi restituirne il valore.

$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'esempio seguente illustra come creare una variabile di tipo complesso e quindi recuperarne le proprietà. In questo caso, viene usato un oggetto macchina virtuale di Get-AzVM che specifica un subset delle relative proprietà.

$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

Esempi di runbook testuali

L'esempio seguente illustra come impostare e recuperare una variabile in un runbook testuale. In questo esempio si presuppone che la creazione di variabili integer denominate numberOfIterations e numberOfRunnings e una variabile stringa denominata sampleMessage.

$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)

Esempi di runbook grafici

In un runbook grafico è possibile aggiungere attività per i cmdlet interni Get-AutomationVariable o Set-AutomationVariable. È sufficiente fare clic con il pulsante destro del mouse su ogni variabile nel riquadro della raccolta dell'editor grafico e selezionare l'attività desiderata.

Add variable to canvas

La figura seguente illustra attività di esempio per aggiornare una variabile con un valore semplice in un runbook grafico. In questo esempio, l'attività per Get-AzVM recupera una singola macchina virtuale di Azure e salva il nome del computer in una variabile stringa di automazione esistente. Non è importante se il collegamento è una pipeline o una sequenza poiché il codice si aspetta un singolo oggetto nell'output.

Set simple variable

Passaggi successivi