Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Moda na co dzien determinuje wiele z naszych zachowan – kupujemy „wypasione” telefony, szybkie (lub duze) samochody, modne ciuchy, piszemy na blogach, itd. W chwili refleksji dotarlo do mnie, ze nie nadazam za moda – wszak nie prowadze bloga… Czas wiec to nadrobic i dolaczyc do bardziej nowoczesnej czesci spoleczenstwa. Nie dosc wiec, ze na blogu, to zajmiemy sie jeszcze modnymi technologiami – Windows Azure i PowerShellem. Zapraszam…
Windows Azure oferuje calkiem przyjemny portal do zarzadzania nasza „chmurka” nie mniej jednak w niektórych sytuacjach przydalaby sie nam automatyzacja wybranych czynnosci. Z pomoca przychodzi oczywiscie PowerShell i dedykowany modul do Windows Azure. Aby rozpoczac nasza przygode, bedziemy potrzebowali PowerShell w wersji minimum 3.0 oraz modul, który mozna pobrac z witryny Microsoft: https://go.microsoft.com/fwlink/?LinkID=279888.
Po pobraniu i instalacji modulu uruchamiamy konsole PowerShell i tu czeka na nas mala niespodzianka – funkcja automatycznego ladowania modulów, do której tak juz sie zdazylismy przyzwyczaic nie zadzialala… Spiesze jednak aby Was uspokoic – to nie blad, modul domyslnie instaluje sie w katalogu C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure, który nie jest brany pod uwage przez mechanizm importujacy moduly. Jak zwykle mamy kilka sposobów na zmiane tego zachowania, jednym z nich moze byc dodanie do naszego profilu PowerShell nastepujacej linii:
$env:PSModulePath = $env:PSModulePath + ";C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure"
Przy ponownym uruchomieniu PowerShella mozemy juz korzystac z polecen dostepnych w module Azure.
Czas wiec podlaczyc sie do naszej subskrypcji Windows Azure. Do wyboru mamy dwie mozliwosci.
W przypadku pierwszej opcji mozemy skorzystac z polecenia Add-AzureAccount, niestety zostaniemy poproszeni o zalogowanie sie w dodatkowym oknie. O ile metoda ta sprawdzi sie podczas prac ad hoc, o tyle przy próbie automatyzacji zadan bedzie to problem.
Drugi sposób wykorzystuje certyfikat, który mozna pobrac z portalu Windows Azure. Po uruchomieniu polecenia Get-AzurePublishSettingsFile zostanie uruchomiona przegladarka internetowa na stronie udostepniajacej plik z certyfikatem. Plik o rozszerzeniu .publishsettings nalezy zapisac w bezpiecznym miejscu (wszak jest to klucz do zarzadzania naszym srodowiskiem!). Tak przygotowani, uruchamiamy polecenie Import-AzurePublishSettingsFile, jako parametr podajac sciezke do pobranego przed chwila pliku i mozemy zarzadzac srodowiskiem.
Import-AzurePublishSettingsFile azure.publishsettings
Polecenie powoduje import certyfikatu do naszego magazynu oraz utworzenie pliku konfiguracyjnego w sciezce C:\Users\Nazwa_Uzytkownika\AppData\Roaming\Windows Azure PowerShell.
Za pomoca polecenia Get-AzureSubscription mozemy sprawdzic jak dlugo wazny jest nasz certyfikat umozliwiajacy polaczenie - [Not After].
Pora wykonac jakies prawdziwe zadanie. Na poczatek sprawdzmy, jakie maszyny wirtualne mamy juz utworzone w naszym srodowisku – wykorzystamy polecenie Get-AzureVM:
W celu uruchomienia jednej z maszyn wydamy polecenie Start-AzureVM, np.:
Start-AzureVM -ServiceName gblab -Name dc2
Analogicznie wygladaloby zatrzymanie maszyny:
Stop-AzureVM -ServiceName gblab -Name dc2 -Force
Parametr Force bedzie potrzebny, gdy zatrzymujemy ostatnia maszyne w ramach naszej uslugi (gblab w tym przypadku). Uwazajcie jednak, efektem zatrzymania ostatniej maszyny bedzie zmiana adresu IP (zarówno VIP, jaki i DIP). Wiecej na ten temat znajdziecie tutaj: https://blogs.technet.com/b/keithmayer/archive/2013/06/19/windows-azure-virtual-machines-there-s-more-than-1-way-to-shutdown-a-vm.aspx
Stwórzmy zatem przykladowa funkcje, która spowoduje uruchomienie calego naszego srodowiska (ograniczamy klikanie na portalu!):
function Start-AzureLAB
{
$x = 1
Write-Progress -Activity "Getting VMs" -Status "Please wait..."
$VMs = Get-AzureVM | where {$_.Status -ne "ReadyRole"}
foreach ($VM in $VMs)
{
Write-Progress -Activity "Starting VMs" -Status $VM.Name `
-PercentComplete ($x * 100 / $VMs.Count)
Start-AzureVM -ServiceName $VM.ServiceName -Name $VM.Name
do
{
Start-Sleep -Milliseconds 250
}
while ((Get-AzureVM -ServiceName $VM.ServiceName `
-Name $VM.Name).PowerState -ne "Started")
$x++
}
}
Po dodaniu funkcji do profilu mamy gotowy mechanizm – proste polecenie PowerShell zamiast serii „klikniec”…
Pierwsze zadanie wykonane. Jesli uwazacie, ze czasami warto podazac za moda – niewykluczone, ze ciag dalszy nastapi…
Wiecej informacji o aspektach praktycznego wykorzystania Windows Azure znalezc mozna w artykule Piotra - Wirtualna maszyna “w chmurze”– czyli srodowisko testowe lub produkcyjne, w Windows Azure.