Cześć! W poprzednim wpisie zobaczyłeś jak łatwo stworzyć Virtual Machine Scale Set z własnego obrazu dysku. Dziś krótko pokażę, jak wdrożyć całą aplikację na VMSS przy użyciu Visual Studio Team Services, uruchomić za pomocą skryptu i pobawić się w „skalowanie”. Zainteresowany? Zapraszam!
Przykładową aplikację oraz kroki zapożyczyłem z oficjalnego blog’a. Okazało się jednak, że o ile budowanie kodu w VSTS działa poprawnie, to już wdrożenie na VMSS nie, dlatego postanowiłem pokazać Ci wszystko, end2end.
-
Po tym jak pobrałem kod aplikacji i załadowałem ją do VSTS, przyszedł czas na przygotowanie procesu Build. Kroki są niezwykle proste.
- Pobranie kodu
- Następnie instalacja paczki
- Następnie uruchomienie tasków za pomocą gulp’a. Jeśli nie wiesz co to jest gulp (ja też nie wiedziałem) to odpowiedź znajdziesz tutaj: https://www.merixstudio.pl/blog/gulpjs-co-jest-i-z-czym-sie-je/
- Wszystko gotowe, została tylko przekopiowanie utworzonej paczki
- Pobranie kodu
-
W tym momencie mam zbudowaną paczkę, opublikowaną w konkretnym katalogu. Co teraz? Już same przyjemności – zostało nam zbudować obraz dla naszego VMSS i zaktualizować maszyny. I tu okazuje się, że wpis na oficjalnej stronie nie działa:) i potrzebuje dwóch modyfikacji.
- W pierwszym kroku procesu Release należy zbudować obraz dysku. Bardzo ważne by w konfiguracji nie wybrać obrazu z listy dostępnych w Azure. Jeśli tak zrobisz:) popsujesz dokładnie wszystko. Co więcej, musisz wskazać obraz systemu, który wcześniej przygotowałeś. Przeanalizuj moją konfigurację poniżej
- Poza wybraniem dysku, który będzie modyfikowany, trzeba wskazać paczkę, która zostanie na dysk załadowana. Zobacz drugą część tego samego ekranu, gdzie to dokładnie pokazuję.
- Teraz jeszcze tylko trzeba zaktualizować oficjalny obraz z którego korzysta VMSS. Jest do tego gotowe zadanie ale ja jednak użyłem PowerShell’a. Rzuć okiem poniżej.
# get the VMSS model $vmss = Get-AzureRmVmss -ResourceGroupName chat-vmss-dev-rg -VMScaleSetName chat-vmss-dev # set the new version in the model data $vmss.virtualMachineProfile.storageProfile.osDisk.image.uri="$(bakedImageUrl)" # update the virtual machine scale set model Update-AzureRmVmss -ResourceGroupName chat-vmss-dev-rg -Name chat-vmss-dev -VirtualMachineScaleSet $vmss
Można teraz postawić pytanie. Czy po wykonaniu tych kroków wszystkie dyski maszyn w ramach VMSS zostaną zaktualizowane a maszyny uruchomione ponownie? Nie… gdyby tak było, nie miałbyś kontroli nad swoim zestawem maszyn a każde wykonanie „releasu” kodu powodowałby restart.
- Teraz czas na „zakolejkowanie” swojego „Releasu”. Przy tworzeniu obrazu chwilę to potrawa.
- Co teraz? Trzeba wrócić do portalu Azure i na instancjach, wchodzących w skład VMSS wykonać aktualizację. Oczywiście to samo możesz osiągnąć wykonując skrypt PowerShell.
- W pierwszym kroku procesu Release należy zbudować obraz dysku. Bardzo ważne by w konfiguracji nie wybrać obrazu z listy dostępnych w Azure. Jeśli tak zrobisz:) popsujesz dokładnie wszystko. Co więcej, musisz wskazać obraz systemu, który wcześniej przygotowałeś. Przeanalizuj moją konfigurację poniżej
Twój VMSS właśnie otrzymał nowy obraz dla wszystkich instancji.
Czy już teraz Twoja Node.JS będzie dostępna wprost z serwerów wchodzących w skład VMSS pod jego publicznym adresem IP? Niestety nie, trzeba zrobić jeszcze dwie proste rzeczy o których przeczytasz w kolejnym wpisie.