30
IT Professionals 03 | Managing Windows Azure Virtual Machines from PowerShell

03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Embed Size (px)

DESCRIPTION

Aprenderás a usar PowerShell para la automatización y administración avanzada de Máquinas Virtuales en Windows Azure. Visita http://aprendiendowindowsazure.wordpress.com

Citation preview

Page 1: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

IT Professionals03 | Managing Windows Azure Virtual

Machines from PowerShell

Page 2: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

PowerShell for Automation and Advanced Management

Automation Query, manage and configure – at scale:

• Virtual Machines

• Storage across multiple subscriptions and storage accounts

• Tiered deployment workflows

Virtual Machines Configure storage and networking

Domain join to AD on-premises

Bring your own machine images or disks

Use remote PowerShell

Virtual Network Configure Virtual Network

Manage configuration and gateway

Connect to on-premises networks

Storage Upload & download VHDs from storage accounts to on-premises

Copy VHDs between storage accounts and subscriptions

Page 3: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Agenda• Getting Started • Virtual Machine

Management• Disk and Image

Repository• Configuring Virtual

Networks

Page 4: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

What can you do with PowerShell?

AutomationQuery, Manage and Configure Virtual Machines across multiple subscriptions, cloud services and storage accounts.

Virtual NetworkingCompletely Configure VNETs from a Script

Provision Fully Configured Virtual MachinesDomain JoinedStorage and Networking Configured

Page 5: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Setting up your Subscription

Use: Get-AzurePublishSettingsFile and Import-AzurePublishSettingsFileTo Import Downloaded Publish Profile (.publishsettings) http://windows.azure.com/download/publishprofile.aspx

Automatically configures Subscription ID, Certificate, Service Endpoint and Subscription Name.

Page 6: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Manual Configuration of Subscription

Associate Certificate and Subscription ID$cert = Get-Item cert:\CurrentUser\My\CERTTHUMBPRINTSet-AzureSubscription 'mysub' -Certificate $cert -SubscriptionID $id

Page 7: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Subscription Management

Subscription Settings Persisted C:\Users\user\AppData\Roaming\Windows Azure Powershell

Subscription Example<Subscription name="somesub1"> <SubscriptionId>13d83b03-6d06-4770-943c-3d46766c3a35</SubscriptionId>

<Thumbprint>2AC8112B34CC840A30B9C2716AE840D5DC107510</Thumbprint> <ServiceEndpoint>https://management.core.windows.net/</ServiceEndpoint> </Subscription>

Page 8: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Switching Between Subscription Settings

Multiple Subscription Support Get-AzureSubscription | foreach { Select-AzureSubscription $_.SubscriptionName # Perform Management Operation Against Each Subscription}

Page 9: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Setting the current storage account

Returns Storage AccountGet-AzureStorageAccount | Select StorageAccountName

Cmdlets like New-AzureQuickVM will use this Account

Sets the Current Storage AccountSet-AzureSubscription 'somesub1' -CurrentStorageAccount 'mystorage‘

Page 10: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Information Needed to create a VM

Image NameGet-AzureVMImage | select ImageName

Disk NameGet-AzureDisk | select DiskName

Data Center LocationGet-AzureLocation

Page 11: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Virtual Machine Management

Quick VM Provisioning ModeSupports VM Creation in a Single Cmdlet

Create Multiple Pre-Defined VMs in a BatchNew-AzureVM -VMs $vm1, $vm2, $vm3

Advanced Provisioning Configuration ModeProvision With: Endpoints, Data DisksConfigure: Cache Settings for OS/Data Disks and Subnet Names

Page 12: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Simple VM Creation

First Virtual Machine in a NEW Cloud Service (-Location specified)New-AzureQuickVM -Windows -ServiceName $svc -Name $vm1 -ImageName $wimg -Location $location -Password $pwd

New Virtual Machine in an Existing Cloud Service (no –Location)New-AzureQuickVM -Windows -ServiceName $svc -Name $vm2 -ImageName $wimg -Password $pwd

Creating a Linux Virtual Machine in an Existing Cloud ServiceNew-AzureQuickVM -Linux -ServiceName $svc -Name $vm3 -ImageName $limg -LinuxUser $lu -Password $pwd

Page 13: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Configuring VM at Provisioning

Create Configuration Object with New-AzureVMConfigModify with Add-* cmdletsAdd with New-AzureVM

New-AzureVMConfig -Name $vm1 -InstanceSize Medium -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd | Add-AzureDataDisk -CreateNew -DiskLabel 'data' -DiskSizeInGB 10 -LUN 0 | Add-AzureEndpoint -Name 'web' -PublicPort 80 -LocalPort 80 -Protocol tcp | New-AzureVM -ServiceName $newSvc -Location $location

Page 14: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

VM Batch Creation

Create Multiple Configured VMs and Pass to New-AzureVM

$vm1 = New-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd

$vm2 = New-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd $vm3 = New-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd New-AzureVM -CreateService -ServiceName $cloudSvcName -VMs $vm1,$vm2,$vm3 -Location $dc

Page 15: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

VM Batch Creation (using an array)

Create Multiple Configured VMs and Pass to New-AzureVM

$vmcount = 5$vms = @()for($i = 0; $i -lt 5; $i++){ $vmn = 'myvm' + $i $vms += New-AzureVMConfig -Name $vmn -InstanceSize 'Small' -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd | Add-AzureDataDisk -CreateNew -DiskLabel 'data' -DiskSizeInGB 10 -LUN 0 | Add-AzureDataDisk -CreateNew -DiskLabel 'logs' -DiskSizeInGB 10 -LUN 1 }

New-AzureVM -ServiceName $cloudSvcName -VMs $vms -Location $dc

Page 16: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Common Settings

NameThe name of the Virtual Machine

InstanceSizeExtraSmall, Small, Medium, Large, ExtraLarge

AvailabilitySetNameThe availability set (used for high availability)

Page 17: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Windows Provisioning Options

Add-AzureProvisioningConfig Options-Windows -Password $pwd-WindowsDomain -Password $pwd -Domain $dom, -JoinDomain $fqdn, -DomainUser $domUser -DomainPassword $domPwd -MachineObjectOU $ou-DisableAutomaticUpdates-NoRDPEndpoint, -TimeZone, Certificates

Page 18: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Linux Provisioning Options

Add-AzureProvisioningConfig OptionsLinux -LinuxUser $user -Password $pwd -DisableSSH , -NoSSHEndpoint -SSHKeyPairs, -SSHPublicKeys installed from certificates deployed in cloud service

Page 19: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Deploying into a Virtual Network

Virtual Machine SettingsSet Subnet on VM with Set-AzureSubnet

Deployment SettingsSet Virtual Network -VNetName Set DNS Servers - New-AzureDns and -DNSSettings

Page 20: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Provisioning into a VNET and Active Directory$dom = 'contoso'$jdom = 'contoso.com'$onPremDNS = New-AzureDns -IPAddress '192.168.1.4' -Name 'OnPremDNS'$cloudDNS = New-AzureDns -IPAddress '10.1.1.4' -Name 'CloudDNS'$computerOU = $advmou = 'OU=AzureVMs,DC=contoso,DC=com‘

New-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | Add-AzureProvisioningConfig -WindowsDomain -Password $pwd -Domain $dom ` -DomainUserName $domUser -DomainPassword $dpwd -JoinDomain $jdom ` -MachineObjectOU 'AzureVMs' | Set-AzureSubnet -SubnetNames 'AppSubnet' | New-AzureVM –ServiceName $svc -AffinityGroup 'adag' ` -VNetName 'ADVNet' -DnsSettings $onPremDNS, $cloudDNS

Page 21: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Virtual Machine Discovery

Retrieve Cloud Services Get-AzureService

Retrieve Virtual Machines for Service Get-AzureVM -ServiceName $cloudSvcName

Retrieve Status for All VMs in SubsriptionGet-AzureService | foreach { $_ | Get-AzureVM | ft ServiceName, Name, InstanceStatus}

Page 22: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Virtual Machine Storage

Data DisksAdd/Remove data disks at boot or while runningCreate blank or attach existing disks

Modify Cache Settings of OS Disk or Data DiskModifying OS Disk while running requires reboot

Page 23: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Data Disk Creation

New Virtual Machine Creation with Data DiskNew-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd | Add-AzureDataDisk -CreateNew -DiskSizeInGB 10 -DiskLabel 'myddisk' -LUN 0 | New-AzureVM -ServiceName $cloudSvcName

Add new Data Disk to existing Virtual MachineGet-AzureVM -ServiceName 'myvm1' | Add-AzureDataDisk -CreateNew -DiskSizeInGB 10 -DiskLabel 'myddisk' -LUN 1 | Update-AzureVM

Page 24: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Modifying Cache Settings

Set Host Caching on OS Disk During ProvisioningNew-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd | Set-AzureOSDisk -HostCaching 'ReadOnly' | New-AzureVM -ServiceDescription $cloudSvcName

Set Host Caching on Existing Data Disk in running VMGet-AzureVM -ServiceName $cloudSvcName -Name 'myvm1' | Set-AzureDataDisk -HostCaching 'ReadWrite' -LUN 0 | Update-AzureVM

Page 25: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Configuring Endpoints

Add Endpoints at CreationNew-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd | Add-AzureEndpoint -LocalPort 80 -PublicPort 80 -Name http -Protocol tcp | Add-AzureEndpoint -LocalPort 443 -PublicPort 443 -Name https -Protocol tcp | New-AzureVM -ServiceDescription $cloudSvcName

Modify Endpoints at RuntimeGet-AzureVM -ServiceName $cloudSvcName -Name 'myvm1' Add-AzureProvisioningConfig -Windows -Password $pwd | Add-AzureEndpoint -LocalPort 53 -PublicPort 53 -Name dns -Protocol udp | Remove-AzureEndpoint -Name https | New-AzureVM -ServiceDescription $cloudSvcName

Page 26: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Disk and Image Repository

OS Images

Get-AzureVMImage # Return all Get-AzureVMImage | Where { $_.Category -eq 'Microsoft' } # Return Microsoft Get-AzureVMImage | Where { $_.Category -eq 'User' } # Return CustomGet-AzureVMImage | Where { $_.Category -eq 'Partner' } # Return Partner ImagesGet-AzureVMImage | Where { $_.OS -eq 'Windows' } # Return only Windows OS imagesRemove-AzureVMImage -ImageName 'myimg' -DeleteVHD # Delete image and storageAdd-AzureVMImage -OS 'Windows' -ImageName 'MyWinImage' -MediaLocation 'http://storageaccount/vhds/winimage.vhd' # Add Existing VM Image from Storage

Disks

Get-AzureDisk # Return all Get-AzureDisk | Where { $_.AttachedTo -eq $null } # Return all not attached to a VMGet-AzureDisk | Where { $_.OS -eq $null } # Return only data disks Get-AzureDisk | Where { $_.OS -eq 'Windows' } # Return only Windows OS disksRemove-AzureDisk -DiskName 'mydisk' -DeleteVHD # Delete disk and storageAdd-AzureDisk -OS 'Windows' -DiskName 'MyWinDisk' -MediaLocation 'http://storageaccount/vhds/winosdisk.vhd‘ # Add Existing OS Disk from Storage Add-AzureDisk -DiskName 'MyDataDisk' -MediaLocation 'http://storageaccount/vhds/datadisk.vhd‘# Add Existing Data Disk from Storage

Microsoft, Partner and User

OS Disks or Data Disks

Page 27: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Batch Updates to Running VMs

Remove RDP and Add New Storage Across all Web Front Ends

Get-AzureVM -ServiceName $svc | Where { $_.Name -match 'wfe' } | foreach { $_ | Remove-AzureEndpoint -Name 'rdp' | Add-AzureDataDisk -CreateNew -DiskSizeInGB 10 -LUN 1 -DiskLabel 'newstorage' | Update-AzureVM}

Page 28: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Capturing a Virtual Machine as a new ImageCapture Sys-Prepped VM into a new Image (Deletes the Source VM)

Save-AzureVMImage -ServiceName $cloudSvcName -Name 'myvm1' -NewImageName 'Image Name'

Page 29: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Virtual Network Operations

View and Set Virtual Network ConfigurationGet-AzureVNetConfig | Select -Expand XMLConfigurationSet-AzureVNetConfig -ConfigurationPath 'c:\Network\MyNetCFG.xml'

Start and Stop Virtual Network Gateway Set-AzureVNetGateway -Disconnect -VNetName 'MyVNet' -LocalNetworkSiteName 'MySite'Set-AzureVNetGateway -Connect -VNetName 'MyVNet' -LocalNetworkSiteName 'MySite'

View Virtual Network StatusGet-AzureVNetConnection -VNetName 'MyVNet'

Page 30: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure

Summary

Virtual Machine Management

Disk and Image Repository

Configuring Virtual Networks