03 administracion de máquinas virtuales con powershell | windows azure
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.comTRANSCRIPT
![Page 1: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/1.jpg)
IT Professionals03 | Managing Windows Azure Virtual
Machines from PowerShell
![Page 2: 03 Administracion de Máquinas Virtuales con PowerShell | Windows Azure](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062615/54820e15b07959150c8b46a2/html5/thumbnails/30.jpg)
Summary
Virtual Machine Management
Disk and Image Repository
Configuring Virtual Networks