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 specificare che venga crittografata e archiviata da 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. Una raccomandazione di Microsoft Defender per il cloud suggerisce di crittografare tutte le variabili di Automazione di Azure, come descritto in Le variabili dell’account di Automazione devono essere crittografate. 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:
- String
- Intero
- Data/Ora
- Booleano
- 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
. Nei runbook destinati all'esecuzione nell'ambiente sandbox di Azure o in un ruolo di lavoro ibrido per runbook di Windows si usa il Set-AutomationVariable
.
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. II 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 le variabili nel parametro Name
del cmdlet Get-AutomationVariable
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 riportate nella tabella seguente vengono usate per accedere alle variabili in un runbook di 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
- Dall'account di Automazione, nel riquadro a sinistra, selezionare Variabili in Risorse condivise.
- Nella pagina Variabili, selezionare Aggiungi una variabile.
- 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 la creazione di variabili integer denominate numberOfIterations e numberOfRunnings e di 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 Get-AutomationVariable o Set-AutomationVariable interni. È sufficiente fare clic con il pulsante destro del mouse su ogni variabile nel riquadro della raccolta dell'editor grafico e selezionare l'attività desiderata.
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.
Passaggi successivi
Per altre informazioni sui cmdlet usati per accedere alle variabili, vedere Gestire i moduli in Automazione di Azure.
Per informazioni generali sui runbook, vedere Esecuzione di runbook in Automazione di Azure.
Per informazioni dettagliate sulle configurazioni DSC, vedere Panoramica di State Configuration di Automazione di Azure.