Zarządzanie zmiennymi w usłudze Azure Automation

Zmienne zasoby to wartości, które są dostępne dla wszystkich elementów Runbook i konfiguracji DSC na koncie usługi Automation. Można nimi zarządzać za pomocą witryny Azure Portal, programu PowerShell, elementu Runbook lub konfiguracji DSC.

Zmienne automatyzacji są przydatne w następujących scenariuszach:

  • Udostępnianie wartości między wieloma elementami Runbook lub konfiguracjami DSC.

  • Udostępnianie wartości między wieloma zadaniami z tej samej konfiguracji elementu Runbook lub DSC.

  • Zarządzanie wartością używaną przez elementy Runbook lub konfiguracje DSC z poziomu portalu lub z poziomu wiersza polecenia programu PowerShell. Przykładem jest zestaw typowych elementów konfiguracji, takich jak określona lista nazw maszyn wirtualnych, określona grupa zasobów, nazwa domeny usługi AD i inne.

Usługa Azure Automation utrwala zmienne i udostępnia je nawet wtedy, gdy konfiguracja elementu Runbook lub DSC zakończy się niepowodzeniem. To zachowanie pozwala jednemu elementowi Runbook lub konfiguracji DSC ustawić wartość używaną przez inny element Runbook lub tę samą konfigurację elementu Runbook lub DSC przy następnym uruchomieniu.

Usługa Azure Automation bezpiecznie przechowuje każdą zaszyfrowaną zmienną. Podczas tworzenia zmiennej można określić jej szyfrowanie i magazyn przez usługę Azure Automation jako bezpieczny zasób. Po utworzeniu zmiennej nie można zmienić jej stanu szyfrowania bez ponownego tworzenia zmiennej. Jeśli masz zmienne konta usługi Automation przechowujące poufne dane, które nie są jeszcze zaszyfrowane, musisz je usunąć i ponownie utworzyć jako zaszyfrowane zmienne. Zaleceniem Microsoft Defender dla Chmury jest szyfrowanie wszystkich zmiennych usługi Azure Automation zgodnie z opisem w temacie Zmienne konta usługi Automation powinny być szyfrowane. Jeśli masz niezaszyfrowane zmienne, które mają zostać wykluczone z tego zalecenia dotyczącego zabezpieczeń, zobacz Wyklucz zasób z zaleceń i wskaźnik bezpieczeństwa, aby utworzyć regułę wykluczania.

Uwaga

Zabezpieczanie zasobów w usłudze Azure Automation dotyczy poświadczeń, certyfikatów, połączeń i zaszyfrowanych zmiennych. Te zasoby są szyfrowane i przechowywane w usłudze Azure Automation przy użyciu unikatowego klucza generowanego dla każdego konta usługi Automation. Usługa Azure Automation przechowuje klucz w zarządzanym przez system usłudze Key Vault. Przed zapisaniem bezpiecznego zasobu usługa Automation ładuje klucz z usługi Key Vault, a następnie używa go do szyfrowania zasobu.

Typy zmiennych

Podczas tworzenia zmiennej w witrynie Azure Portal należy określić typ danych z listy rozwijanej, aby portal mógł wyświetlić odpowiednią kontrolkę do wprowadzania wartości zmiennej. Poniżej przedstawiono typy zmiennych dostępne w usłudze Azure Automation:

  • Ciąg
  • Liczba całkowita
  • Data/godzina
  • Wartość logiczna
  • Null (zero)

Zmienna nie jest ograniczona do określonego typu danych. Należy ustawić zmienną przy użyciu programu Windows PowerShell, jeśli chcesz określić wartość innego typu. Jeśli wskazujesz Not definedwartość , wartość zmiennej jest ustawiona na wartość Null. Należy ustawić wartość za pomocą polecenia cmdlet Set-AzAutomationVariable lub wewnętrznego Set-AutomationVariable polecenia cmdlet. Używasz elementu Set-AutomationVariable w elementach Runbook przeznaczonych do uruchamiania w środowisku piaskownicy platformy Azure lub w hybrydowym procesie roboczym elementu Runbook systemu Windows.

Nie można użyć witryny Azure Portal do utworzenia lub zmiany wartości dla typu zmiennej złożonej. Można jednak podać wartość dowolnego typu przy użyciu programu Windows PowerShell. Typy złożone są pobierane jako newtonsoft.Json.Linq.JProperty dla typu obiektu złożonego zamiast typu PSObject PSCustomObject.

Możesz przechowywać wiele wartości w jednej zmiennej, tworząc tablicę lub tabelę skrótów i zapisując ją w zmiennej.

Uwaga

Zmienne nazw maszyn wirtualnych mogą mieć maksymalnie 80 znaków. Zmienne grupy zasobów mogą mieć maksymalnie 90 znaków. Zobacz Reguły i ograniczenia nazewnictwa dla zasobów platformy Azure.

Polecenia cmdlet programu PowerShell w celu uzyskania dostępu do zmiennych

Polecenia cmdlet w poniższej tabeli tworzą zmienne automatyzacji i zarządzają nimi za pomocą programu PowerShell. Są one dostarczane jako część modułów Az.

Polecenia cmdlet opis
Get-AzAutomationVariable Pobiera wartość istniejącej zmiennej. Jeśli wartość jest prostym typem, pobierany jest ten sam typ. Jeśli jest to typ złożony, PSCustomObject pobierany jest typ. 1
New-AzAutomationVariable Tworzy nową zmienną i ustawia jej wartość.
Remove-AzAutomationVariable Usuwa istniejącą zmienną.
Set-AzAutomationVariable Ustawia wartość istniejącej zmiennej.

1 Nie można użyć tego polecenia cmdlet do pobrania wartości zaszyfrowanej zmiennej. Jedynym sposobem, aby to zrobić, jest użycie wewnętrznego Get-AutomationVariable polecenia cmdlet w konfiguracji elementu Runbook lub DSC. Aby na przykład wyświetlić wartość zaszyfrowanej zmiennej, możesz utworzyć element Runbook, aby pobrać zmienną, a następnie zapisać ją w strumieniu wyjściowym:

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

Wewnętrzne polecenia cmdlet do uzyskiwania dostępu do zmiennych

Wewnętrzne polecenia cmdlet w poniższej tabeli są używane do uzyskiwania dostępu do zmiennych w konfiguracjach elementów Runbook i DSC. Te polecenia cmdlet są dostarczane z modułem Orchestrator.AssetManagement.Cmdletsglobalnym . Aby uzyskać więcej informacji, zobacz Wewnętrzne polecenia cmdlet.

Wewnętrzne polecenie cmdlet opis
Get-AutomationVariable Pobiera wartość istniejącej zmiennej.
Set-AutomationVariable Ustawia wartość istniejącej zmiennej.

Uwaga

Unikaj używania zmiennych w parametrze NameGet-AutomationVariable polecenia cmdlet w konfiguracji elementu Runbook lub DSC. Użycie zmiennej może komplikować odnajdywanie zależności między elementami Runbook i zmiennymi automatyzacji w czasie projektowania.

Funkcje języka Python do uzyskiwania dostępu do zmiennych

Funkcje w poniższej tabeli są używane do uzyskiwania dostępu do zmiennych w elemecie Runbook języka Python 2 i 3. 3 elementy Runbook języka Python są obecnie dostępne w wersji zapoznawczej.

Funkcje języka Python opis
automationassets.get_automation_variable Pobiera wartość istniejącej zmiennej.
automationassets.set_automation_variable Ustawia wartość istniejącej zmiennej.

Uwaga

Aby uzyskać dostęp do funkcji zasobów, należy zaimportować automationassets moduł w górnej części elementu Runbook języka Python.

Tworzenie i pobieranie zmiennej

Uwaga

Jeśli chcesz usunąć szyfrowanie dla zmiennej, musisz usunąć zmienną i utworzyć ją ponownie jako niezaszyfrowaną.

Tworzenie i pobieranie zmiennej przy użyciu witryny Azure Portal

  1. Na koncie usługi Automation w okienku po lewej stronie wybierz pozycję Zmienne w obszarze Udostępnione zasoby.
  2. Na stronie Zmienne wybierz pozycję Dodaj zmienną.
  3. Ukończ opcje na stronie Nowa zmienna , a następnie wybierz pozycję Utwórz , aby zapisać nową zmienną.

Uwaga

Po zapisaniu zaszyfrowanej zmiennej nie można jej wyświetlić w portalu. Można go aktualizować tylko.

Tworzenie i pobieranie zmiennej w programie Windows PowerShell

Konfiguracja elementu Runbook lub DSC używa New-AzAutomationVariable polecenia cmdlet do utworzenia nowej zmiennej i ustawienia jej wartości początkowej. Jeśli zmienna jest zaszyfrowana, wywołanie powinno używać parametru Encrypted . Skrypt może pobrać wartość zmiennej przy użyciu polecenia Get-AzAutomationVariable.

Uwaga

Skrypt programu PowerShell nie może pobrać zaszyfrowanej wartości. Jedynym sposobem, aby to zrobić, jest użycie wewnętrznego Get-AutomationVariable polecenia cmdlet.

W poniższym przykładzie pokazano, jak utworzyć zmienną ciągu, a następnie zwrócić jej wartość.

$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

W poniższym przykładzie pokazano, jak utworzyć zmienną o typie złożonym, a następnie pobrać jej właściwości. W tym przypadku obiekt maszyny wirtualnej z polecenia Get-AzVM służy do określania podzestawu jego właściwości.

$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

Przykłady tekstowego elementu Runbook

W poniższym przykładzie pokazano, jak ustawić i pobrać zmienną w tekście elementu Runbook. W tym przykładzie przyjęto założenie, że tworzenie zmiennych całkowitych o nazwie numberOfIterations i numberOfRunnings oraz zmiennej ciągu o nazwie 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)

Przykłady graficznego elementu Runbook

W graficznym elemencie Runbook można dodawać działania dla wewnętrznych poleceń cmdlet Get-AutomationVariable lub Set-AutomationVariable. Wystarczy kliknąć prawym przyciskiem myszy każdą zmienną w okienku Biblioteka edytora graficznego i wybrać odpowiednie działanie.

Add variable to canvas

Na poniższej ilustracji przedstawiono przykładowe działania w celu zaktualizowania zmiennej przy użyciu prostej wartości w graficznym elemecie Runbook. W tym przykładzie działanie dla Get-AzVM pobierania pojedynczej maszyny wirtualnej platformy Azure i zapisuje nazwę komputera w istniejącej zmiennej ciągu automatyzacji. Nie ma znaczenia, czy link jest potokiem, czy sekwencją , ponieważ kod oczekuje tylko jednego obiektu w danych wyjściowych.

Set simple variable

Następne kroki