Azure: Sprytny sposób na skryptowanie w Azure CLI i BASH

15-lis-2022

Azure CLI uruchamiane z linii komend jest zdecydowanie prostsze niż wykonywanie tej samej czynności z poziomu PowerShell. No dobrze, może nie zawsze, ale zdarza się. Na przykład do utworzenia alertu, w przypadku PowerShella trzeba utworzyć kilka różnych obiektów programistycznych, które w końcu łączy się w całość. Nie jest to problem dla programisty, ale administrator może mieć odmienne zdanie.

Niestety z CLI jest taki problem, że zbudowanie poleceń, które nawzajem wykorzystywałyby swoje wyniki wymaga znajomości języka skryptowego BASH. BASH jest starszy, żeby nie powiedzieć „toportniejszy” od nowoczesnego PowerShella.

Ostatnio spotkałem jednak eleganckie rozwiązanie na usunięcie grupy zasobów, której nazwa rozpoczyna się od zadanego ciągu znaków. No po prostu bardzo mi się to spodobało:

az group list --query "[?starts_with(name,'lab-dev-de')].name" --output tsv

To polecenie poszuka takich grup. Warto je uruchomić przed usuwaniem, bo właśnie te grupy zasobów zostaną usunięte w kolejnym kroku. Korzystamy z opcji group list, czyli wylistuj grupy zasobów, których nazwa zaczyna się od czegoś tam.

No i polecenie usuwające:

az group list --query "[?starts_with(name,'lab-dev-de')].[name]" --output tsv | xargs -L1 bash -c 'az group delete --name $0 --no-wait --yes'

Zaczynamy od polecenia szukającego określonej grupy zasobów i potokiem przekazujemy do xargs, którego zadaniem jest uruchomić komendę z parametrami. polecenie to az group delete, a parametr to $0 – czyli nazwa grupy zasobów. Reszta parametrów jest przekazywana statycznie. O nic nie spyta tylko weźmie i usunie. Wygodne (i niebezpieczne)

Komentarze są wyłączone

Autor: Rafał Kraik