Administrasjon av Windows Azure med PowerShell

Windows Azure er Microsoft`s plattform for skytjenester, hvor tjenester som databaser, virtuelle maskiner og websider er tilgjengelige. Da tjenesten ble annonsert i 2008 og allment tilgjengelig i 2010 var plattformen primært av interesse for utviklere. I Juni 2012 ble Virtual Machines annonsert som en ny tjeneste, noe som gjør plattformen interessant også for ITPro`er.

Windows Azure Virtual Machines

Den første Azure-tjenesten som tilbød virtuelle maskiner var VM Role, primært tiltenkt skalerbare skytjenester. Denne tjenesten gjorde det mulig å laste opp sitt eget Windows Server 2008 R2 VHD image, og kunne administreres med Remote Desktop. En ulempe med denne tjenesten sett fra en ITPro`s ståsted var at den benyttet non-persistent lagring, altså endringer ble ikke lagret når maskinen ble restartet.

Den nye tjenesten Virtual Machines, tilgjengelig som Preview, tilbyr flere tjenester som gjør den mer interessant for ITPro`er. Hovedforskjellen sammenlignet med VM Role er persistent storage, samt mer fleksibilitet rundt nettverk. I tillegg til å definere dine egne nettverk og subnet i Azure kan du opprette en VPN-tunnell mot ditt lokale nettverk. Dette gjør tjenesten aktuelle for flere scenarier, blant annet:

  • Bruk av Windows Azure som secondary site
  • Utrulling av tjenester typisk plassert i en tradisjonell DMZ-sone, som for eksempel web servere
  • Lab og demo miljøer

 

Windows Azure PowerShell Cmdlets

Det er flere API`er tilgjengelig for å automatisere administrasjon av Windows Azure. For utviklere er det et Windows Azure REST API tilgjengelig. For ITPro`er er det både PowerShell cmdlets og en System Center Orchestrator Integration Pack for Windows Azure tilgjengelig. De første PowerShell cmdlet`ene for Azure var tilgjengelig på Codeplex, mens det nå tilbys en modul direkte fra engineering teamet. Cmdlet`ene er tilgjengelig som en Windows PowerShell modul, og krever Windows PowerShell 2.0 eller 3.0. Elementer som kan administreres med denne modulen er:

  • Subscriptions
  • Virtual Machines
  • Virtual Networks
  • Storage Accounts
  • Cloud Services

 

Installasjon

Stegene for å laste ned, installere og konfigurere maskinen din for Windows Azure PowerShell Cmdlets er godt dokumentert på siden Get Started with Windows Azure Cmdlets.

Nedlastingslinken peker direkte til Windows Azure PowerShell applikasjonen som er tilgjengelig i Web Platform Installer:

image

Installasjonsprogrammet vil legge til stien til Azure PowerShell modulen (C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\) i environment variabelen $env:PSModulePath, noe som gjør det mulig å importere modulen ved å bruke kun navnet på modulen:

 Import-Module Azure

Hvis du bruker Windows PowerShell 3.0 er det ikke nødvendig å manuelt importere modulen, grunnet den nye module autoloading funksjonen.

Hvis du ikke har aktivert PowerShell script-kjøring på maskinen din må du gjøre det før du kan laste inn Azure-modulen. En generell anbefaling er å sette PowerShell`s execution policy til RemoteSigned:

 Set-ExecutionPolicy RemoteSigned

For å liste tilgjengelig cmdlets kan vi benytte Get-Command:

 Get-Command -Module azure

Det er også en oversikt over tilgjengelig cmdlets på siden Windows Azure Management Cmdlets.

Konfigurasjon

Før du kan bruke Azure-kommandoene mot ditt Azure-abonnement må du konfigurere publiserings-innstillinger og abonnement. Det er to måter å gjøre dette på:

  1. Automatisert konfigurasjon ved bruk av Get-AzurePublishSettingsFile og Import-AzurePublishSettingsFile
  2. Manuell konfigurasjon ved bruk av Set-AzureSubscription og Select-AzureSubscription

#1 er den enkleste metoden, du kjører først Get-AzurePublishSettingsFile som åpner standard nettleser hvor du må logge på for å laste ned en konfigurasjons-fil. Når dette er gjort kjører du Import-AzurePublishSettingsFile og spesifiserer stien til .publishsettings filen du lastet ned.

#2 krever mer arbeid, men er passende når du vil ha mer kontroll over innstillingene. For eksempel når du vil benytte ditt eget sertifikat du har lastet opp til Windows Azure Management Certificates. Dette er et eksempel på hvordan Set-AzureSubscription  brukes:

    1:   Set-AzureSubscription `
    2:       -SubscriptionId   26e6d24e-7e46-4a30-9f58-a14706bbfea1 `
    3:       -Certificate      (Get-ChildItem cert:\currentuser\my\8A15ED234D550ECBEDB7E051C59820105BFC2BEC) `
    4:       -SubscriptionName "Windows Azure MSDN – Visual Studio Ultimate"

Når abonnement og innstillinger er konfigurert skal du kunne kjøre Get-AzureSubscription for å se detaljer om de konfigurerte abonnementene. Hvis du har konfigurert mer enn ett abonnement kan du bytte mellom abonnementene ved å bruke Select-AzureSubscription.

En siste ting som kan være fornuftig å konfigurere er standard lagringskonto. Mange av Azure cmdlet`ene krever at du angir en lagringskonto, noe som ikke er nødvendig når du har konfigurert en standard lagringskonto. For å liste tilgjengelige lagringskontoer, kjør Get-AzureStorageAccount. For å konfigurere en standard lagringskonto, benytt Set-AzureSubscription med parameteren CurrentStorageAccount. Et eksempel:

 Get-AzureSubscription | Set-AzureSubscription -CurrentStorageAccount portalvhdspd3kt2t

 

Innstillingene lagres på dette området i din brukerprofil: C:\Users\<brukernavn>\AppData\Roaming\Windows Azure Powershell

 

Bruk av Azure PowerShell Cmdlets

Nå som du har installert og konfigurert din maskin for bruk av Windows Azure PowerShell cmdlets kan vi se på hvordan cmdlet`ene kan brukes.

Jeg vil anbefale å starte med å se på hva som er tilgjengelig ved å benytte Get- cmdlets. Du kan liste alle tilgjengelig Get- cmdlets I Azure-modulen ved å bruke Get-Command:

 Get-Command -Module azure -Verb Get

 

Start med for eksempel Get-AzureVMImage for å liste tilgjengelig imager for virtuelle maskiner:

image

 

Get-AzureVM lister dine virtuelle maskiner:

image

Starte en virtuell maskin:

image

 

Flere eksempler:

    1:  # Create a new virtual machine
    2:  New-AzureVMConfig -Name "DEMO-01" -InstanceSize ExtraSmall -ImageName (Get-AzureVMImage)[3].ImageName `
    3:                | Add-AzureProvisioningConfig –Windows –Password "P@ssw0rd" `
    4:                | New-AzureVM –ServiceName "DEMO-01" -Location "West Europe" -VNetName "Azure Vnet 01" -AffinityGroup 1
    5:   
    6:  # Start the new virtual machine
    7:  Get-AzureVM "DEMO-01" | Start-AzureVM
    8:   
    9:  # Connect to the new virtual machine using Remote Desktop
   10:  Get-AzureRemoteDesktopFile -ServiceName "DEMO-01" -Name "DEMO-01" –Launch
   11:   
   12:  # Save your virtual network configuration to an XML-file
   13:  Get-AzureVNetConfig | Select-Object -Expand XMLConfiguration | Out-File c:\temp\Azure-Vnet.xml

Når du oppretter en ny virtuell maskin vil det som standard opprettes et endepunkt for Remote Desktop slik at du kan koble deg til den virtuelle maskinen. Dette er typisk noe du ikke ønsker om du har opprettet en VPN-tunnell mot ditt lokale nettverk, og dermed ikke har behov for å eksponere den virtuelle maskinen direkte mot internett. Hvis du ikke vil opprettet endepunktet for RDP kan du angi parameteren –NoRDPEndpoint når du benytter Add-AzureProvisioningConfig.

Du kan også definere dine egne endepunkter, for eksempel for PowerShell Remoting (TCP 5985):

    1:  # Add an endpoint for PowerShell Remoting (Windows Remote Management)
    2:  Get-AzureVM "DEMO-01" | Add-AzureEndpoint -Name "WinRM" -PublicPort 5985 -LocalPort 5985 -Protocol tcp | Update-AzureVM
    3:   
    4:  # Add the hostname of the virtual machine to the local WSMan Trusted Hosts
    5:  Set-Item WSMan:\localhost\Client\TrustedHosts -Value "demo-01.cloudapp.net"
    6:   
    7:  # Connect to the virtual machine using PowerShell Remoting
    8:  Enter-PSSession -ComputerName demo-01.cloudapp.net -Credential (Get-Credential)

 

Du finner flere eksempler på bruk av Azure cmdlet`ene på siden Use Windows Azure Cmdlets.

Jeg vil også anbefale å laste ned Windows Azure Training Kit, som inneholder demoer, lab`er og presentasjoner om Azure. Relevante presentasjon for det som er nevnt i denne artikkelen:

  • WindowsAzureITProOverview.pptx
  • WindowsAzureVirtualMachines.pptx
  • ManagingVMs-PowerShell.pptx

Det er også flere PowerShell-relaterte lab-oppgaver i training kit`et, for eksempel Automating VM Management with PowerShell, og Deploying Active Directory with PowerShell.

Hvis du ønsker mer info kjører Microsoft Norge flere Windows Azure Camps denne høsten. Arrangementene er gratis og du finner mer informasjon på denne siden.

 

Ressurser

Windows Azure Virtual Machines

Windows Azure PowerShell

Windows Azure Management Portal

Windows Azure Training Kit

Windows Azure 90 day free trial