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:
- String
- Liczba całkowita
- DateTime
- 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 defined
wartość , 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.Cmdlets
globalnym . 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 Name
Get-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
- Na koncie usługi Automation w okienku po lewej stronie wybierz pozycję Zmienne w obszarze Udostępnione zasoby.
- Na stronie Zmienne wybierz pozycję Dodaj zmienną.
- 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.
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.
Następne kroki
Aby dowiedzieć się więcej o poleceniach cmdlet używanych do uzyskiwania dostępu do zmiennych, zobacz Zarządzanie modułami w usłudze Azure Automation.
Aby uzyskać ogólne informacje na temat elementów Runbook, zobacz Wykonywanie elementu Runbook w usłudze Azure Automation.
Aby uzyskać szczegółowe informacje na temat konfiguracji DSC, zobacz Omówienie usługi Azure Automation State Configuration.