Skrypt Powershell do backupowania Azure Web Apps

31 Sie

Link do paczki

W poprzednim wpisie zamieściłem skrypt, który backupuje bazy danych w ramach serwera Azure SQL. Dziś pokażę jak wykonać podobną operację dla Azure Web Apps. Najbardziej znacząca różnica jest taka że w tym skrypcie backupy będą zapisywane do blobów w Azure Storage Account (w poprzednim skrypcie backupy baz danych były zapisywane na dysk lokalny dzięki wykorzystaniu bibliotek SQL) – do tej operacji będzie trzeba wygenerować Shared Access Signature (SAS) w Visual Studio. No to po kolei, zacznę od omówienia samego skryptu.

Konfiguracja skryptu

$sasUri – tutaj podajemy odnośnik do konta magazynu, który wygenerujemy w następnym kroku

$resourcegroup – nazwa grupy zasobów w której znajdują się Web Appy do backupu

$srvName – nazwa serwera hostującego Web Appy

$subscription – nazwa subskrypcji w której znajdują się Web Appy

Jak widać danych do skryptu nie jest za wiele, ale do jego poprawnego działania wymagany jest SAS Uri. Niestety nie jest to coś gotowego co możemy po prostu wziąć z Azure’a i wkleić do skryptu. Ten Uri trzeba wygenerować za pomocą prostej aplikacji konsolowej w Visual Studio.

Utworzenie SAS Uri

W skrócie Shared Access Signature to klucz za pomocą którego można wykonywać operacje na koncie magazynowym Azure bez potrzeby podawania poświadczeń użytkownika. Program lub osoba posiadające klucz mogą wykonywać określone operacje na obiektach magazynu przez określony okres czasu bez konieczności posiadania informacji o danych wrażliwych na temat naszego konta magazynu. Zazwyczaj SAS Uri zaszywane jest gdzieś w aplikacji, która za jego pomocą wykonuje operacje na obiektach konta magazynu Azure. Więcej informacji znajdziecie pod tym linkiem.

Na podstawie informacji zawartych w dokumentacji Azure’a dotyczącej SAS można napisać prostą aplikację konsolową generującą SAS Uri, który następnie wykorzystamy skrypcie.

Konfiguracja nowego projektu w Visual Studio

Uruchom Visual Studio (w moim przypadku wersja Professional 2015 – polecam, ponieważ ta wersja jest przystosowana do pisania aplikacji pod Azure’a) i wybierz File – New Project…, następnie z drzewka po lewej stronie rozwiń Installed – Templates – Visual C# – Windows i wybierz Console Application. Ja pisałem na wersji .NET 4.5.2. Nadaj projektowi jakąś nazwę (może być domyślna), ewentualnie zmień ścieżkę projektu i kliknij OK. Powinna zostać utworzona struktura aplikacji wraz ze wszystkimi niezbędnymi bibliotekami, itd.

vs-newproject-consoleapp

Aby aplikacja działała poprawnie i mogła się komunikować z Azure należy dodać paczki NuGet. W tym celu z menu Visual Studio wybierz Project – Manage NuGet Packages… Przejdź do zakładki Browse i wyszukaj oraz zainstaluj dwie paczki:

  1. WindowsAzure.Storage
  2. Microsoft.WindowsAzure.ConfigurationManager

vs-nuget-consoleapp

To już prawie wszystko jeśli chodzi o konfigurację samego projektu. Trzeba jeszcze dodać bibliotekę System.configuration – bez niej aplikacja sypała mi błędami. W Solution Explorer trzeba kliknąć prawym przyciskiem na References i wybrać Add Reference… W nowym oknie zaznaczamy System.Configuration i klikamy OK. Na liście referencji powinna pojawić się nowa biblioteka.

vs-reference-consoleapp

Skoro już wszystkie paczki i biblioteki są na miejscu można przejść do samego kodowania 🙂

Aplikacja i jej konfiguracja

Nie będę się rozwodził na temat kodu aplikacji – po pierwsze nie ma go dużo, po drugie wszystko jest opisane pod wcześniej podawanymi linkami. Na samym początku wpisu zamieszczam zzipowane pliki .cs i App.config które są dla nas najważniejsze. Jedyne co trzeba zmienić to ścieżka do Twojego konta magazynowego w Azure w pliku App.config:

Musimy oczywiście zmienić wartości „nazwa_konta_magazynu” oraz „klucz_konta_magazynu„. Jeśli chodzi o to drugie to w portalu Azure trzeba wejść w konto magazynu i wybrać  Access keys. Tam są dwa klucze do konta – wystarczy podać jeden z nich.

storageacc-accesskeys

Teraz wystarczy uruchomić aplikację (w menu Visual Studio Debug – Start Without Debugging lub skrót Ctrl + F5) i powinno pojawić się okienko konsoli w którym mamy wypisany nasz SAS Uri 🙂 Kopiujemy go i wklejamy w odpowiednie miejsce w skrypcie ($SASUri=) i tak skonfigurowany skrypt możemy w końcu uruchomić w Powershell.

SASuri

Uruchomienie skryptu

Najlepiej uruchomić konsolę Powershell ISE jako administrator i wczytać tam skrypt po czym go odplaić. Powinno pojawić się okno do logowania do Azure, następnie skrypt zacznie pytać o to czy chcemy wyświetlać szczegółowe informacje podczas jego działania (verbose info). Najczęściej skrypt będzie rzucał błędami w dwóch przypadkach:

  1. Błędny SASUri
  2. Aktualnie skonfigurowany plan nie zezwala na backupy Web Appów (tylko plany Standard i Premium dają tą możliwość)

Zawsze warto sprawdzić czy backup się wykonał w Portalu Azure wchodząc w zakładkę Backups w naszym Web Appie. Tam też można podejrzeć szczegółowe informacje i logi.

Na koniec skrypt zapyta czy chcemy usunąć zbackupowanego Web Appa ale Uwaga: czynisz to na własną odpowiedzialność! Zawsze przed podjęciem takiej decyzji upewnij się, że blob z backupem jest faktycznie widoczny w koncie magazynu, które skonfigurowałeś do przechowywania backupów!

Mam nadzieję że to ułatwi Wam backupowanie i administrowanie Web Appami 🙂

Dodaj komentarz