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:
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å:
- Automatisert konfigurasjon ved bruk av Get-AzurePublishSettingsFile og Import-AzurePublishSettingsFile
- 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:
Get-AzureVM lister dine virtuelle maskiner:
Starte en virtuell maskin:
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