Azure DevOps Library backup

Instalacja AZ CLI

Rozwiązaniem stosowanym przeze mnie jest wykorzystanie powershella i modułu AZ.
Niestety komendy którymi się posługuję są obecnie w wersji 'preview’, tj. mogą się kiedyś zmienić i działać inaczej lub przyjmować inne parametry.

W pierwszej kolejności instalujemy u siebie odpowiedni moduł powershella:

Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msi

Następnie uwierzytelniamy się w Azure naszym kontem:

 az login

Wylistowanie Library

Pierwsze co zróbmy to sprawdźmy jakie pozycje mamy w Library. Do tego potrzebujemy znać nazwę naszej organizacji i projektu. Odczytujemy to logując się do https://dev.azure.com

Następnie po wejściu w Azure DevOps w lewym menu wybieramy organizację a w prawym oknie mamy projekty.

Główna strona Azure DevOps - wybór organizacji i projektu
Główna strona Azure DevOps – wybór organizacji i projektu

Za pomocą komendy poniżej listujemy wszystkie pozycje w Library:

az pipelines variable-group list --query-order Asc --output table --organization https://dev.azure.com/Nazwa_Organizacji/ --project NazwaProjektu
Azure DevOps Library list

Mam zasadę, że dla każdej aplikacji (razy ilość środowisk) mam osobne ustawienia dla IISa, SQLa i samej aplikacji. Trzymam konfiguracje wszystkich aplikacji, których dystrybucja odbywa się z użyciem Continous Deployment obsługiwanym przez Azure.

Dla kilkunastu aplikacji lista robi się już długa.

Pobranie pojedynczych ustawień

Jeżeli potrzebujemy pobrać ustawienia tylko dla jednego elementu z Library, to potrzebujemy jego numeru ID, który uzyskaliśmy wyżej. Np. dla ID 6 ustawienia pobierzemy za pomocą polecenia:

az pipelines variable-group show --group-id 6 --organization https://dev.azure.com/Nazwa_Organizacji/ --project Nazwa_Projektu

Wynikiem tego polecenia będzie wynik w formacie JSON który możemy zapisać w formie pliku – to jest nasz backup.
Uwaga. Jeżeli wartość była oznaczone jako 'Secret’, nie wyciągniemy jej wartości. Warto mieć to na względzie i wszelkie hasła i tokeny trzymać w niezależnym i bezpiecznym miejscu.

Pobranie wszystkich ustawień i zapis do plików

Jak mamy kilka pozycji w Library to możemy skorzystać z polecania powyżej i ręcznie wyciągać wartości dla wszystkich ustawień. Jeżeli jest ich więcej, lepiej jest przeiterować się pętlą po wszystkich pozycjach i zapisać je do plików.

$library = $(az pipelines variable-group list --query-order Asc --organization https://dev.azure.com/Nazwa_Organizacji/ --project Nazwa_Projektu) | ConvertFrom-Json

$library | ForEach-Object {Write-Host $_.name; $_.variables | ConvertTo-Json | Out-File "$($_.name).json"}

A co z odtwarzaniem?

Na razie nie miałem czasu do tego usiąść. Backupy do tej pory potrzebowałem tylko na zasadzie „A co było tam ustawione miesiąc temu, że teraz nie działa?”.

Znalazłem, że ktoś już napisał skrypt odtwarzający wpisy z Library, ale jako wejście przyjmuje plik CSV, a nie JSON (prawie na pewno da się zastosować bez zmian, tylko trzeba przetransponować JSONa na CSV):

https://www.powershellgallery.com/packages/Posh-AzureDevOps/1.0.7/Content/modules%5CLibraries%5CImport-AzDoVariableGroupVariables.psm1

https://github.com/ravensorb/Posh-AzureDevOps

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *