Zrozumienie runbooków Azure Automation
To jest artykuł typu reference (odniesienie). Jeśli chcesz przejść od razu do implementacji, zobacz przewodnik krok po kroku o uruchamianiu i zatrzymywaniu maszyn wirtualnych na podstawie tagów.
Czym jest Azure Automation?
Azure Automation to środowisko do automatyzacji procesów w chmurze Azure oraz w środowiskach lokalnych. Umożliwia:
- Uruchamianie zadań zgodnie z harmonogramem (np. start/stop VM, czyszczenie zasobów)
- Pisanie runbooków w Pythonie, PowerShellu lub w postaci graficznych przepływów pracy
- Centralizację logiki sterowania infrastrukturą
Obsługiwane języki
Runbooki mogą być tworzone w:
- PowerShell (preferowany ze względu na szerokie wsparcie modułów)
- Python 3 (zalecany Python 3, ale działa w piaskownicy z ograniczeniami)
- Graficzny lub z użyciem Hybrid Workers
Tożsamość i dostęp
Runbooki uwierzytelniają się do zasobów Azure za pomocą Managed Identity (zalecane)
Tożsamość musi mieć odpowiednie uprawnienia do zarządzanych zasobów. W przypadku maszyn wirtualnych:
- Przydziel rolę
Virtual Machine Contributor
na poziomie grupy zasobów lub subskrypcji, by móc wykonywać operacje na maszynach wirtualnych. - Przydziel rolę
Network Contributor
, jeśli korzystasz z funkcji wysłania raportu na e-mail z listą wirtualnych maszyn i IP, na których wykonano operacje.
Zależności: Moduły
Moduły Azure muszą być ręcznie dodane do konta Automation.
Najczęściej wymagane moduły to:
Az.Accounts
– uwierzytelnianieAz.Compute
– operacje na maszynach wirtualnychAz.Resources
– filtrowanie tagów i grup zasobów
Użyj Galerii modułów, aby je zaimportować lub zaktualizować.
Przykładowy przebieg runbooka w Pythonie
Poniżej opisano logikę stojącą za przewodnikiem start-stop-vms:
- Uwierzytelnienie przy użyciu managed identity
- Filtrowanie maszyn wirtualnych na podstawie tagu (
availability: bizhours
) - Iteracja po przefiltrowanych maszynach:
- Jeśli
shutdown == false
, uruchom maszynę - Jeśli
shutdown == true
, zatrzymaj maszynę
- Jeśli
- Zaloguj wynik działania
- Wyślij e-mail
Zobacz skrypt Python na GitHubie
Dobre praktyki i alternatywy
- Preferuj PowerShell ze względu na lepsze wsparcie modułów i obsługę błędów
- Rozważ użycie Azure Functions do automatyzacji bezserwerowej
- Wprowadź politykę tagowania z użyciem Azure Policy
- Zbieraj logi z runbooków przy użyciu Log Analytics