automating azure vms with powershell

Post on 27-Jul-2015

221 Views

Category:

Engineering

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Automating Azure VMs with PowerShellFeschenko AlexanderSenior Software Engineer @ EPAM SystemsBlog: feschenkoalex.blogspot.comEmail: feschenko.alex@gmail.com

Microsoft Azure

Agenda Intro to Windows Azure PowerShellAutomating Azure virtual machines.

Base cmdlets descriptionDemo Session. Create and configure

virtual machine. Provision and configure frontend and backend parts

Migrating applications to the Cloud with Azure IaaS

Getting startedDownload and Install Windows Azure PowerShell http://go.microsoft.com/?linkid=9811175

Download Web Deploy 3.5http://www.iis.net/downloads/microsoft/web-deploy

Add-AzureAccount

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

Remote ManagementManage SQL Databases, Configuration, Diagnostics, Deployments, and Azure assets (Affinity Groups, Storage Accounts, Keys, etc..)

New Disk Persisted in

Storage

Cloud

Provisioning VMProvision From

GalleryGetting Started

Management Portal

>_Scripting

(Windows, Linux and Mac)

REST API

Boot VM from New DiskWindows Server

Linux

General PurposeBasicStandard

Optimized ComputePerformance OptimizedNetwork Optimized

7

VM GalleryA COLLECTION OF PREBUILT IMAGES FOR VARIOUS WORKLOADS

Microsoft Azure

Windows Server 2012 R2

Ubuntu Server 14.04 LTS

CentOS 6.5SUSE Linux

Enterprise Server Oracle Linux 6.4.0.0.0

SQL Server 2014 Standard

Oracle Database 11g R2

BizTalk Server 2013 SharePoint Server Farm

Microsoft Dynamics GP 2013 Zulu 8

SAP HANA Developer Edition Puppet Enterprise

3.2.3Barracuda Web

Application

Oracle WebLogicServer 12.1.2

Visual Studio Ultimate 2013

openSUSE 13.1

8

VM Extensions• Installable components to customize VM instances• Enable various DevOps scenarios• Can be added, updated, disabled or removed at any time• Managed via portal, PowerShell and Management APIs

Microsoft Azure

Virtual Machine Management

Quick VM ProvisioningSupports VM Creation in a Single Cmdlet

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

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

Setting the current storage account

Returns Storage AccountGet-AzureStorageAccount | Select StorageAccountName

Cmdlets like New-AzureQuickVM will use this Account

Sets the Current Storage Account

Virtual Machine DiscoveryRetrieve 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}

Simple VM creationFirst 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

Setting VM configurationNew-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

Disks and ImagesOS Images• Microsoft• Partner • User

Disks• OS Disks • Data Disks

Base OS image for new Virtual MachinesSys-Prepped/Generalized/Read Only Created by uploading or by capture

Writable Disks for Virtual MachinesCreated during VM creation or during upload of existing VHDs.

Image MobilityOn-Premises Cloud

MyApp.vhd

Data disk creationNew 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

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

Customer Manager Architecture

IISVM1

IISVM2

SQL Server Load Balancer

PowerShell script. Performsautomated deployment and VM configuringService Management API

End Users

CustomerManager DBdeployed

CustomerManager web app deployed

CustomerManager web app deployed

Automating Customer Manager App

Provision 2 frontend servers and 1 backend

Remote PowerShell to VMs and configure its parameters: web server, firewall rules, app pools, etc.

Compile and build CustomerManager. Deploy the package to frontend servers. Point frontend to SQL VM

Run CustomerManager and observe results

Demo: Provisioning VMManaging VMs using PowerShell

Migrating apps to the Cloud

Migration ApproachesBuild Virtual Machine in the Cloud

Migrating an existing virtual machine

Lowers upload time and dependency risk

Application, configuration and data in an installed working state

Requires upload and installation of application and data

Requires uploading a large amount of data and higher risk of drivers or other hardware dependencies on VM not available in the cloud

Migrating a Multi-VM applicationCloud Service Acts as a Network Boundary

All VMs in the same service can communicate directly.Name resolution between VMs is automatic with Windows Azure provided DNS

VM Name: iisvm110.1.5.6

VM Name: iisvm210.1.5.7

VM Name: sqlvm110.1.5.8

DIP

DIP DIP

Cloud ServiceName: bootcamp2015kh.cloudapp.net

Load BalancerPublic IP

Virtual Machine Configuration

Windows Azure supports VHD file format

Upload existing VHDs using CSUpload.exeOther formats will have to be converted or migrated before upload

Supports resuming failed transfersConverting from dynamic to fixed disk on UploadEfficient upload – does not send empty bytes

Things to do before uploading OS diskEnable Remote Access

Migrating a simple virtual machineOn Premises VMMachine Name: APPSRV1Memory: 8GbCores: 4Ports: 80/443 http/https

Guest: C:\Host: C:\VMs\APP-OS.vhd

Guest: D:\Host: D:\VMs\APP-Data.vhd

Guest: E:\Host: E:\VMs\APP-Logs.vhd

Cloud ServiceName: myapp.cloudapp.net

Virtual MachineRole Name: appsrv14 cores7 Gb RAMPorts 80/443

Guest: C:\Host: C:\VMs\APP-OS.vhd

Guest: E:\Host: E:\VMs\APP-Data.vhd

Guest: F:\Host: F:\VMs\APP-Logs.vhd

Migration Steps1) Upload VHDsCSUpload or other tools

2) Create VMOS disk = APP-OS.vhd

3) Configure data disks Data Disk 1 = App-Data.vhdData Disk 2 = App-Logs.vhd

4) Adjust app for drive letters

Windows Azure Storage

5) Add Endpoints (80/443)

Imaging VMs in the CloudCloud

Blob Storage

Base VHD

Boot VM

Customize VHD

Generalize VHD

Capture VM

Capture VM saves customized image to your image library

Azure Virtual Networks A protected private virtual network in cloud Extend enterprise networks into Azure Cross-premises connectivity

29

Virtual Network Scenarios• Hybrid Public/Private Cloud

Enterprise app in Microsoft Azure requiring connectivity to on-premise resources

• Enterprise Identity and Access ControlManage identity and access control with on-premise resources (on-premises Active Directory)

• Monitoring and ManagementRemote monitoring and trouble-shooting of resources running in Azure

• Advanced Connectivity RequirementsCloud deployments requiring IP addresses and direct connectivity across services

Microsoft Azure

Questions

top related