Przejdź do treści

Automatyczne uruchamianie i wyłączanie maszyn wirtualnych Azure na podstawie tagów

Ten artykuł to praktyczny przewodnik. Jeśli szukasz kontekstu teoretycznego lub architektonicznego, zajrzyj do artykułu referencyjnego o Azure Automation Runbooks.

Cel

Nauczysz się, jak zautomatyzować uruchamianie lub zatrzymywanie maszyn wirtualnych Azure z użyciem Pythona i Azure Automation, na podstawie tagów typu availability: bizhours.


Wymagania wstępne

  • Subskrypcja Azure
  • Przynajmniej jedna maszyna z tagiem np. availability: bizhours
  • Konto Azure Automation
  • Tożsamość zarządzana / Managed Identity (systemowa lub przypisana przez użytkownika)
  • Uprawnienia typu “Contributor” lub dostęp o zakresie umożliwiającym zarządzanie VM i odczyt sieci (runbook identyfikuje maszyny po tagach, ale weryfikuje IP dla raportu)

Krok po kroku

1. Utwórz (lub wybierz) konto Automation

W Azure Portal:

  • Przejdź do Automation Accounts
  • Utwórz nowe konto lub wybierz istniejące
  • W zakładce Identity przypisz Managed Identity
  • Przydziel rolę RBAC dla zarządzania VM (np. „Virtual Machine Contributor”)

2. Zaimportuj wymagane moduły

W Automation Account - Modules gallery upewnij się, że są dostępne i zaktualizowane następujące moduły Pythona:

  • Az.Accounts
  • Az.Compute
  • Az.Resources

Jeśli ich nie ma, możesz je znaleźć i zaimportować z https://pypi.org/project/azure/
Uwaga: Tylko pliki z rozszerzeniem .whl mogą być przesyłane do Azure.


3. Utwórz runbook w Python 3

  • Przejdź do zakładki RunbooksCreate a runbook
  • Nazwa: start-stop-vms-by-tag
  • Środowisko uruchomieniowe: Python 3
  • Wklej kod z tego repozytorium GitHub

4. Przetestuj i opublikuj

  • Użyj zakładki “Test pane”, aby przetestować z parametrami:
    • --tag_name=availability
    • --tag_value=bizhours
    • --shutdown=True
    • --email_list=email2@adres.com;email1@adres.com
  • Sprawdź logi wykonania
  • Opublikuj runbook

5. Zaplanuj harmonogram uruchomień

Utwórz dwa harmonogramy (Schedules):

  • Rano (np. 08:00): startVMs
  • Wieczorem (np. 18:00): stopVMs

Każdy harmonogram musi zawierać parametry:

  • --tag_name=availability
  • --tag_value=bizhours
  • --shutdown=False (dla porannego uruchamiania)
  • --shutdown=True (dla wieczornego wyłączania — przełącza VM w stan Stopped (Deallocated))

Opcjonalnie: dodaj adres(y) e-mail do raportu:

  • --email_list=email2@adres.com;email1@adres.com

Powiąż parametry z runbookiem przez Parameters and Run Settings.
Po przypięciu harmonogramu jego parametry są zablokowane – aby je zmienić, odepnij harmonogram i przypnij ponownie z nowymi parametrami.


Co dalej?

  • Dodaj więcej tagów dla innych zespołów lub grup zasobów
  • Dodaj obsługę błędów i powiadomień przez Log Analytics lub e-mail
  • Możesz też przepisać runbook do PowerShell lub rozszerzyć go na inne zasoby Azure

Więcej informacji

Zobacz artykuł referencyjny dla kontekstu i teorii.