Przejdź do głównej zawartości

Przyspieszenie pracy nad tagowaniem zasobów za pomocą PowerShell - Tag raport Microsoft Azure

· 4 min aby przeczytać
Piotr Rogala
MVP Azure & owner JustCloud.pl

Kiedyś przygotowałem ten skrypt, żeby szybko móc otagować wiele zasobów wdrożonych na platformie Microsoft Azure. Jest kilka sposobów, aby to zrobić szybko i prosto; starałem się przygotować rozwiązanie uniwersalne, łatwe i bezpieczne w użyciu.

Dlatego postanowiłem zrobić jeden skrypt, który generuje wszystkie zasoby do pliku CSV. Drugi skrypt, na podstawie pliku CSV, pobiera dane zasobów i nadpisuje je na platformie.

Skrypty są dostępne na GitHub:

Opis skryptów:

  • GetAllTags.ps1 - generuje dwa pliki CSV: jeden dla Resource Group, a drugi dla Resources. Jest to istotne, ponieważ grupy i zasoby są rozdzielone, co pozwala tagować je niezależnie, bez wyszukiwania typów zasobów.
  • SetTagsResourceGroups.ps1 - skrypt, który pobiera dane z pliku CSV zawierającego spis Resource Group z tagami do wdrożenia.
  • SetTagsResources.ps1 - skrypt, który pobiera dane z pliku CSV, w którym zapisane są zasoby z tagami do wdrożenia.

Taki podział daje nam:

  1. Zapis stanu obecnego tagów zapisanych do pliku CSV. Jest to raport tagów, czyli obecny stan wdrożonych tagów.
  2. Podział na grupy i zasoby.
  3. Możliwość poprawiania tagów tylko na zasobach lub tylko na grupach zasobów.

Jak działają skrypty?

  1. GetAllTags
  • Zapis do pliku odbywa się automatycznie w lokalizacji, w której wykonujemy skrypt, lub można użyć opcji -path, aby wskazać miejsce zapisu plików.
  • Nazwa pliku zawiera datę — jeśli plik istnieje, zostanie on nadpisany.
  • Skrypt sprawdza, czy jesteś zalogowany do Azure. Podczas wykonywania skryptu możesz podać parametr -tenantId, aby mieć pewność, że logujesz się do odpowiedniego Azure Directory, oraz -subId w celu wybrania subskrypcji.
  1. SetTagsResourceGroups oraz SetTagsResources
  • Import danych z plików odbywa się automatycznie, na podstawie konwencji nazewniczej wygenerowanego wcześniej pliku. Skrypt importuje najnowszy plik CSV we wskazanym katalogu — można też podać ścieżkę poprzez parametr -path.
  • Tagi powinny być oddzielone przecinkami.
  • Tagi zapisane w pliku CSV występują jako pary "Key:Value" w osobnych kolumnach.
  • Skrypt pobiera wszystkie elementy z pliku CSV; następnie usuwa tagi w Microsoft Azure i nadpisuje je danymi z pliku CSV.
  • Jeśli nie chcesz modyfikować danego zasobu, wystarczy go usunąć z pliku CSV.
  • Skrypt działa w trybie równoległym, co pozwala na szybsze wprowadzanie zmian. Throttle dla zapisu tagów wynosi 5 — jest to wartość optymalna.
  • Skrypt sprawdza, czy jesteś zalogowany do Azure — możesz podać parametr -tenantId.
  • Jeśli chcesz wyczyścić tagi na zasobach, zostaw pustą komórkę lub wpisz "empty".
  • Testowanie wprowadzania tagów możesz wykonać poprzez umieszczenie w pliku CSV wyłącznie zasobów, które chcesz zmienić; pozostałe zasoby nie będą brane pod uwagę podczas wdrażania.

Poniżej przedstawiam przykład jak to działa na mojej subskrypcji.

Uruchomienie skryptu:

  • GetAllTags.ps1

Komenda: ./GetAllTags.ps1 -path /tags

Tagowanie zasobów w Azure - output skryptu GetAllTags

Na printscreenie możesz zauważyć output z informacjami, jakie generowane są przez skrypt.

  • Czy jesteś zalogowany, jeśli nie, to poprosi Cię o zalogowanie się
  • Ilość znalezionych grup zasobów oraz zasobów
  • Informacja, gdzie i jakie pliki są tworzone
  • Lista zasobów

Pliki CSV wyglądają następująco:

  • Resource Group

Tagowanie zasobów w Azure - CSV Resource Group

  • Resources

Tagowanie zasobów w Azure - CSV Resources

Poniżej przedstawię edycję tagów dla pliku z zasobami.

Uwaga! Jeśli chcesz zachować kopię obecnego stanu, zabezpiecz wygenerowany plik lub zmień jego nazwę na zupełnie inną.

Poprawiony plik wygląda następująco. Zauważ, że wypełniłem tagi dla wszystkich obiektów oraz dodałem nowy tag: Test:Key, aby pokazać, jak wygląda przypisywanie wielu tagów.

Edycja tagów

Wynik skryptu z wykonanymi zmianami:

Komenda: ./SetTagsResources.ps1 -path /tags

Wynik wykonania skryptu

Efekt zmian w Portalu Azure:

Efekt w Portalu Azure

Skrypt można dostosować do swoich celów tak, aby działał na przykład dla wielu subskrypcji. Jest wiele opcji customizacji tego skryptu, które celowo pominąłem. Skrypty działają modułowo więc można ich łatwo użyć z innym skryptem, a reszta zostanie przygotowana i wdrożona na podstawie wprowadzonych danych z pliku.

Zapraszam do pozostawienia komentarza!