Quantcast
Channel: TechNet Blogs
Viewing all articles
Browse latest Browse all 17778

Modna para – Windows Azure i PowerShell

$
0
0

Moda na co dzień determinuje wiele z naszych zachowań – kupujemy „wypasione” telefony, szybkie (lub duże) samochody, modne ciuchy, piszemy na blogach, itd. W chwili refleksji dotarło do mnie, że nie nadążam za modą – wszak nie prowadzę bloga… Czas więc to nadrobić i dołączyć do bardziej nowoczesnej części społeczeństwa. Nie dość więc, że na blogu, to zajmiemy się jeszcze modnymi technologiami – Windows Azure i PowerShellem. Zapraszam…

 

Windows Azure oferuje całkiem przyjemny portal do zarządzania naszą „chmurką” nie mniej jednak w niektórych sytuacjach przydałaby się nam automatyzacja wybranych czynności. Z pomocą przychodzi oczywiście PowerShell i dedykowany moduł do Windows Azure. Aby rozpocząć naszą przygodę, będziemy potrzebowali PowerShell w wersji minimum 3.0 oraz moduł, który można pobrać z witryny Microsoft: http://go.microsoft.com/fwlink/?LinkID=279888.

Po pobraniu i instalacji modułu uruchamiamy konsolę PowerShell i tu czeka na nas mała niespodzianka – funkcja automatycznego ładowania modułów, do której tak już się zdążyliśmy przyzwyczaić nie zadziałała… Spieszę jednak aby Was uspokoić – to nie błąd, moduł domyślnie instaluje się w katalogu C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure, który nie jest brany pod uwagę przez mechanizm importujący moduły. Jak zwykle mamy kilka sposobów na zmianę tego zachowania, jednym z nich może być dodanie do naszego profilu PowerShell następującej linii:

 

$env:PSModulePath = $env:PSModulePath + ";C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure"

 

Przy ponownym uruchomieniu PowerShella możemy już korzystać z poleceń dostępnych w module Azure.

 

Czas więc podłączyć się do naszej subskrypcji Windows Azure. Do wyboru mamy dwie możliwości.

W przypadku pierwszej opcji możemy skorzystać z polecenia Add-AzureAccount, niestety zostaniemy poproszeni o zalogowanie się w dodatkowym oknie. O ile metoda ta sprawdzi się podczas prac ad hoc, o tyle przy próbie automatyzacji zadań będzie to problem.

 

Drugi sposób wykorzystuje certyfikat, który można pobrać z portalu Windows Azure. Po uruchomieniu polecenia Get-AzurePublishSettingsFile zostanie uruchomiona przeglądarka internetowa na stronie udostępniającej plik z certyfikatem. Plik o rozszerzeniu .publishsettings należy zapisać w bezpiecznym miejscu (wszak jest to klucz do zarządzania naszym środowiskiem!). Tak przygotowani, uruchamiamy polecenie Import-AzurePublishSettingsFile, jako parametr podając ścieżkę do pobranego przed chwilą pliku i możemy zarządzać środowiskiem.

Import-AzurePublishSettingsFile azure.publishsettings

Polecenie powoduje import certyfikatu do naszego magazynu oraz utworzenie pliku konfiguracyjnego w ścieżce C:\Users\Nazwa_Użytkownika\AppData\Roaming\Windows Azure PowerShell.

Za pomocą polecenia Get-AzureSubscription możemy sprawdzić jak długo ważny jest nasz certyfikat umożliwiający połączenie - [Not After].

 

Pora wykonać jakieś prawdziwe zadanie. Na początek sprawdźmy, jakie maszyny wirtualne mamy już utworzone w naszym środowisku – wykorzystamy polecenie Get-AzureVM:

W celu uruchomienia jednej z maszyn wydamy polecenie Start-AzureVM, np.:

 

Start-AzureVM -ServiceName gblab -Name dc2

  

Analogicznie wyglądałoby zatrzymanie maszyny:

 

Stop-AzureVM -ServiceName gblab -Name dc2 -Force

  

Parametr Force będzie potrzebny, gdy zatrzymujemy ostatnią maszynę w ramach naszej usługi (gblab w tym przypadku). Uważajcie jednak, efektem zatrzymania ostatniej maszyny będzie zmiana adresu IP (zarówno VIP, jaki i DIP). Więcej na ten temat znajdziecie tutaj: http://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 przykładową funkcję, która spowoduje uruchomienie całego naszego środowiska (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 „kliknięć”…

Pierwsze zadanie wykonane. Jeśli uważacie, że czasami warto podążać za modą – niewykluczone, że ciąg dalszy nastąpi…

 

Więcej informacji o aspektach praktycznego wykorzystania Windows Azure znaleźć można w artykule Piotra - Wirtualna maszyna “w chmurze”– czyli środowisko testowe lub produkcyjne, w Windows Azure.


Viewing all articles
Browse latest Browse all 17778

Trending Articles