Przejdź do treści

Posprzątaj swoją subskrypcję

Azure - clean up subscription - optymalizacja 2022

Artykuł na temat usuwania niepotrzebnych zasobów na platformie Azure. Jeśli też tak macie, że czasem na szybko tworzycie/zmieniacie/aktualizujecie zasoby na platformie Microsoft Azure, to czasem zostają po nich śmieci. Mówiąc “śmieci” mam namyśli zapomniane dyski, adresy IP, albo interfejsy sieciowe, których zapomnieliśmy usunąć od razu, a one leżą nieużywane. W takim przypadku dobrze jest co jakiś czas posprzątać swoją subskrypcję na Azure. Czyszczenie Subskrypcji Azure może także wpłynąć pozytywnie na nasz portfel. Nikt nie lubi płacić za coś czego nie używa.

Dzisiaj pokażę sposób który pozwoli łatwo znaleźć i posprzątać takie nieużywane zasoby.

Artykuł dostępny jest także w na YOUTUBE.

Disks


Na początek zajmiemy się dyskami, które nie są podpięte do żadnych maszyn. Dzieje się tak np. gdy podmieniamy dyski na naszych wirtualnych maszynach na inne albo, gdy usuwamy całe maszyny.
Zdarza się, że zostają wtedy same dyski które nie mają swoich właścicieli. Na portalu Azure bardzo łatwo można zlokalizować takie zasoby.

Wystarczy otworzyć spis wszystkich dysków i spojrzeć na kolumnę OWNER. Powinna tam być nazwa maszyny do której są przypisane. Jeśli wartość jest pusta oznacza to że dysk nie jest podłączony do żadnej maszyny. Ja takie dyski usuwam.

czyszczenie disk azure blog

*Jeśli nie widzicie kolumny OWNER to kliknijcie na ‘Edit columns‘. W nowym oknie wybierzcie pozycję ‘OWNER’ i kliknijcie na strzałkę by dodać tą pozycję to kolumny po prawej stronie.
Na koniec zatwierdźcie wszystko ‘apply’ i nowa kolumna się wam pokaże.

azure blog edit column best
microsoft azure edit column

Public IP address


Adresy IP to kolejna grupa zasobów którą warto posprzątać, bo ona także generuje nam dodatkowe koszty. Chyba nikt nie chce płacić za coś czego nie używa.

Przejdźmy sobie do publicznych adresów IP(‘Public IP address’). Tutaj szukamy kolumny ‘Associated to‘. Jeśli jej nie widzicie to tak jak w poprzednim przykładzie z dyskami należy ją dodać za pomocą ‘Edit columns’.
W tej kolumnie widzimy do jakich zasobów są przypisane nasze publiczne adresy IP. Jeśli brak wpisu to ja usuwam takie nie używane adresy.

microsoft public ip cleanup

Network interfaces


Nieużywane interfejsy sieciowe znajdujemy w podobny sposób, jak publiczne adresy IP. Wyszukujemy sobie ‘Network interfaces‘ i także szukamy kolumny ‘Associated to‘. Jeśli jej nie widzicie to tak jak w poprzednim przykładzie należy ją dodać za pomocą ‘Edit columns’.

W tej kolumnie widzimy do jakich zasobów są przypisane nasze interfejsy sieciowe. Jeśli brak wpisu to ja usuwam takie nie używane interfejsy sieciowe.

azure network interfaces blog

Nieużywane interfejsy sieciowe można także zlokalizować na inny bardziej graficzny sposób. Otwieramy sobie dowolną wirtualną sieć i z opcji ‘Monitoring‘ wybieramy ‘Diagram‘.

Teraz możemy wybrać interesującą nas sieć i zobaczyć jakie interfejsy sieciowe są do niej przypięte. Łatwo zauważyć że na poniższym przykładzie interfejs o nazwie ‘demo_int_001’ nie ma żadnych podpiętych zasobów więc wiecie co można z nim zrobić 😉

cleanup azure virtual networks blog

Usuwanie całego środowiska


Jeśli używamy TAGów to można w prosty sposób usuwać całe środowiska rozrzucone po różnych grupach zasobów. Czyszczenie subskrypcji Azure w ten sposób jest zalecane tylko, jeśli dbamy o to by zawsze nadawać prawidłowe TAGi.

Klikamy na wszystkie zasoby.

azure blog create resource

Teraz dodajemy filtr ‘Add filter‘. By wyświetlić zasoby tylko z określonego środowiska wybieramy nazwę tagu który stworzyliśmy przy tworzeniu zasobów i wartość jaka nas interesuje. W moim przypadku jest to environment i wartość demo.

azure blog edit column show
azure blog all resource

Automatyczne czyszczenie zasobów na Azure za pomocą Automation account

Jeśli chcesz by środowisko demo było usuwane codziennie, to najlepiej dodać skrypt, który będzie tego pilnował. Jeśli czasem tworzymy różne rzeczy testowo/ demonstracyjnie i boimy się, że zapomnimy ich usunąć po skończonej prezentacji/ testach i będzie nas to drogo kosztować. Automatyczne czyszczenie Azure to dobry sposób, żeby upewnić się, że zasoby zostaną usunięte po skończonej pracy. W poniższym przykładzie pokażę jak dodać taki skrypt do Automation account.


Jeśli nie mamy, to tworzymy Automation Account. W nowym okienku podajemy nazwę, wybieramy subskrypcję, tworzymy lub wybieramy grupę zasobów, lokalizację i bardzo ważne by zaznaczona była opcja ‘Create Azure Run As account‘. Teraz możemy kliknąć na Create.

cleanup microsoft automation account
add azure automation account

Gdy Mamy utworzone ‘Automation Account’ otwieramy je. Z ‘Process Automation‘ wybieramy ‘Runbooks‘ i plusikiem ‘Create Runbook‘. Teraz możemy wkleić nasz skrypt i dostosować go do swoich potrzeb.

portal azure runbook automation

PowerShell script 1

Skrypt nr1 na początku wypisuje wszystkie zasoby z określonym tagiem (environment=test), a potem je usuwa. Trzeba być bardzo ostrożnym żeby się nie pomylić.

$DeleteResources = Get-AzureRmResource -TagName environment -TagValue test
$DeleteResources

foreach ($resource in $DeleteResources) {
    Remove-AzResource -ResourceId $resource.id -Force -WhatIf
}

Skrypt zawiera opcję -WhatIf która nie usunie zasobów, a tylko pokaże co się stanie gdy wykonamy polecenie.

!!! Po usunięciu opcji -WhatIf zasoby zostaną bezpowrotnie usunięte !!!

PowerShell script 2

Skrypt nr2 czyści całą ‘grupę zasobów’, po prostu usuwa z niej wszystko. Na początku wypisuje wszystkie zasoby, jakie znajdują się we wskazanej grupie zasobów(test). W drugiej części dla każdego zasobu wykonuje komendę usunięcia.

$DeleteResources = Get-AzureRmResource -ResourceGroupName test
$DeleteResources

foreach ($resource in $DeleteResources) {
    Remove-AzResource -ResourceId $resource.id -Force -WhatIf
}

Skrypt zawiera opcję -WhatIf która nie usunie zasobów, a tylko pokaże co się stanie gdy wykonamy polecenie.

!!! Po usunięciu opcji -WhatIf zasoby zostaną bezpowrotnie usunięte !!!

Zaplanowanie czyszczenia

Gdy dodaliśmy nasz skrypt do ‘Runbook’ i uruchomiliśmy go ręcznie sprawdzając czy działa, to musimy jeszcze zaplanować jego uruchamianie. W tym celu w naszym Runbooku klikamy na ‘Schedules‘ i wybieramy ‘Add a schedule‘.

automation azure blog add schedules

Następnie w nowym oknie wybieramy ‘Schedule‘ i ‘Create a new schedule’

automation azure schedules demo
automation azure create schedules - blog

W nowym oknie podajemy nazwę, opis, datę oraz godzinę pierwszego wykonania zadania. Należy zwrócić uwagę czy strefa czasowa jest dobrze ustawiona i zaznaczyć opcję ‘Recurring‘. Pojawią nam się nowe opcje z których wybieramy jak często zadanie ma być powtarzane zaczynając od daty i godziny którą ustaliliśmy. Ja wybrałem wykonywanie skryptu raz dziennie o godzinie 17:00.

automation azure new schedules

Gdy wszystko ustawimy klikamy na ‘create‘. Tak jak w moim przypadku powinniście widzieć najważniejsze informacje czyli: nazwę, strefę czasową, informację kiedy ponownie zadanie zostanie wykonane i o tym czy jest aktywne czy nie.

automation microsoft blog schedules

Lock

Jeszcze jedna porada na koniec jak się bronić przed przypadkowym usunięciem zasobów. Można używać czegoś takiego jak lock. Możemy założyć zabezpieczenie na konkretny zasób, albo całą grupę zasobów.

azure locks blog resources cleanup

Żeby usunąć zasób z takim zabezpieczeniem będzie trzeba pierw zdjąć zabezpieczenie, a dopiero potem będzie można usunąć zasób.

Więcej na temat zabezpieczenia LOCK przeczytasz w dokumentacji Microsoftu na stronie https://docs.microsoft.com/pl-pl/azure/azure-resource-manager/management/lock-resources.

Jeśli podobał Ci się wpis to pozostałe artykuły związane z Azurem znajdziesz w kategorii azure.