1 / 39

Automating and Managing Windows Azure Solutions with Powershell

Automating and Managing Windows Azure Solutions with Powershell. Tom Fuller Windows Azure – Technology Solution Professional @ DeveloperTofu http://developertofu.com . Who is Tom Fuller?.

base
Download Presentation

Automating and Managing Windows Azure Solutions with Powershell

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Automating and Managing Windows Azure Solutions with Powershell Tom Fuller Windows Azure – Technology Solution Professional @DeveloperTofu http://developertofu.com

  2. Who is Tom Fuller? I lived in Buffalo, NY until I left for college and yes, I am still a Buffalo Bills fan but no, I do not miss the snow 2 Years as MVP, 5 Years as Microsoft Field Engineer, recently took role as Azure specialist Active speaker, writer, blogger developertofu.com or @DeveloperTofu 12 years in dev focused roles like architect, web developer lots of work with large enterprises in the US In 2010, the family moves to Atlanta, GA from Tampa, FL A fun challenge, coaching a 5 and under girls team

  3. Cloud Computing • Packaged Software • Platform • (as a Service) • Software • (as a Service) • Infrastructure • (as a Service) • You manage Applications Applications Applications Applications Data Data Data Data • You manage Runtime Runtime Runtime • Managed by vendor Runtime Middleware Middleware Middleware • You manage • Managed by vendor Middleware O/S O/S O/S Virtualization Virtualization Virtualization O/S Servers Servers Servers Virtualization • Managed by vendor Storage Storage Storage Servers Networking Networking Networking Storage Networking

  4. Cloud Computing Patterns Inactivity Period On and Off Compute • On & off workloads (e.g. batch job) • Over provisioned capacity is wasted • Time to market can be cumbersome t Growing Fast • Successful services needs to grow/scale • Keeping up w/ growth is big IT challenge • Cannot provision hardware fast enough Compute t Unpredictable Bursting • Unexpected/unplanned peak in demand • Sudden spike impacts performance • Can’t over provision for extreme cases Compute Predictable Bursting t • Services with micro seasonality trends • Peaks due to periodic increased demand • IT complexity and wasted capacity Compute t

  5. Windows Azure Comprehensive set of services that enable you to quickly build, deploy and manage applications across a global network of Microsoft-managed datacenters Flexible Open Solid

  6. Global Footprint

  7. 99.95% monthly SLA

  8. Pay only for what you use

  9. Virtual machines Cloud services Web sites

  10. applicationbuildingblocks compute big data database media virtual machines identity traffic manager storage web sites infrastructure for building and running your applications service bus mobile caching CDN networking cloud services

  11. compute data management networking Windows Azure Cloud Services (Stateless VM’s) Virtual machines in the CloudTwo Flavors: A place for your application code to run… Web role is simply a Virtual Machine with IIS pre-configured Worker role is for non-web based processing code, back-end business processes You can actually connect to your web/worker roles – they are just VM’s You package your code/artifacts and Windows Azure bootstraps a VM, installs the code and starts up the VM for you. Load balances multiple instances VMs websites cloud services connect virtual network blob SQL database noSQLdatabase traffic manager Web Role Worker Role

  12. compute data management networking Windows Azure Virtual Machines cloud services Getting Started Select Image and VM Size New Disk Persisted in Storage VMs websites connect virtual network blob SQL database noSQLdatabase traffic manager Boot VM from New Disk Management Portal Blob Storage Scripting (Windows, Linux and Mac) REST API Cloud

  13. compute data management networking Windows Azure Web Sites cloud services VMs Quickly and easily deploy sites to a highly scalable cloud environment with the frameworks and open source apps of your choice using Windows Azure Web Sites websites connect virtual network blob SQL database noSQLdatabase traffic manager Supported Deployment Protocols Supports multiple frameworks (ASP.NET, Classic ASP, PHP, Node.js) Pick from popular Open Source apps Pick your DB (SQL Azure, MySQL) Choose your tools (Visual Studio, Git, FTP, WebMatrix) Build on any platform (Windows, Mac, Linux) GIT : FTP 1010111001010101010001010100011 GIT : FTP 1010111001010101010001010100011 GIT : FTP Web Deploy : TFS Deploy 1010111001010101010001010100011

  14. Management

  15. Service Management API for Managing and Monitoring Applications in Windows Azure Provides programmatic access to platform functionality Used to deploy, manage, and monitor applications Powerful REST API, performed over SSL and mutually authenticated using X.509certificates May be accessed from within application running in Windows Azure, or directly over the Internet from any application PowerShell commands using the same APIs can be used to script management functions

  16. What can you do with PowerShell? Remote Management Manage SQL Databases, Configuration, Diagnostics, Deployments, and Azure assets (Affinity Groups, Storage Accounts, Keys, etc..) Automation Query, Manage and Configure Virtual Machines across multiple subscriptions, cloud services and storage accounts. Provision Fully Configured Virtual Machines Domain Joined Storage and Networking Configured Virtual Networking Completely Configure VNETs from a Script

  17. Getting Started Use: Get-AzurePublishSettingsFile and Import-AzurePublishSettingsFile To Import Downloaded Publish Profile (.publishsettings) http://windows.azure.com/download/publishprofile.aspx Automatically configures Subscription ID, Certificate, Service Endpoint and Subscription Name. Multiple Subscription Support Get-AzureSubscription | foreach { Select-AzureSubscription $_.SubscriptionName # Perform Management Operation Against Each Subscription }

  18. Demo Getting Started with Azure Subscription Credentials in Powershell

  19. Virtual Machine Management Quick VM Provisioning Mode Supports VM Creation in a Single Cmdlet Advanced Provisioning Configuration Mode Provision With: Endpoints, Data Disks Configure: Cache Settings for OS/Data Disks and Subnet Names Create Multiple Pre-Defined VMs in a Batch New-AzureVM -VMs $vm1, $vm2, $vm3

  20. Setting the current storage account Returns Storage Account Get-AzureStorageAccount | Select StorageAccountName Sets the Current Storage Account Set-AzureSubscription 'somesub1' -CurrentStorageAccount 'mystorage‘ Cmdlets like New-AzureQuickVM will use this Account

  21. Information Needed to create a VM Image Name Get-AzureVMImage | select ImageName Disk Name Get-AzureDisk| select DiskName Data Center Location Get-AzureLocation

  22. 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 Service New-AzureQuickVM-Linux-ServiceName $svc -Name $vm3 -ImageName $limg-LinuxUser $lu-Password $pwd

  23. Virtual Machine Discovery Retrieve Cloud Services Get-AzureService Retrieve Virtual Machines for Service Get-AzureVM-ServiceName $cloudSvcName Retrieve Status for All VMs in Subsription Get-AzureService | foreach { $_ | Get-AzureVM | ftServiceName, Name, InstanceStatus }

  24. Common Settings Name The name of the Virtual Machine AvailabilitySetName The availability set (used for high availability) InstanceSize ExtraSmall, Small, Medium, Large, ExtraLarge

  25. 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 Add-AzureProvisioningConfig Options Linux -LinuxUser $user -Password $pwd -DisableSSH , -NoSSHEndpoint -SSHKeyPairs, -SSHPublicKeys installed from certificates deployed in cloud service

  26. Configuring a VM at Provision Time Create Configuration Object with New-AzureVMConfig Modify with Add-* cmdlets Add 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 -Protocoltcp | New-AzureVM-ServiceName $newSvc-Location $location

  27. Virtual Machine Storage Data Disks Add/Remove data disks at boot or while running Create blank or attach existing disks Modify Cache Settings of OS Disk or Data Disk Modifying OS Disk while running requires reboot

  28. Data Disk Creation New Virtual Machine Creation with Data Disk New-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 Machine Get-AzureVM-ServiceName 'myvm1' | Add-AzureDataDisk-CreateNew-DiskSizeInGB 10 -DiskLabel 'myddisk' -LUN 1 | Update-AzureVM

  29. Deploying into a Virtual Network Virtual Machine Settings Set Subnet on VM with Set-AzureSubnet Deployment Settings Set Virtual Network -VNetName Set DNS Servers - New-AzureDns and -DNSSettings

  30. Provision into a VNET and AD $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

  31. Demo Provisioning and updating a new Virtual Machine from Powershell

  32. Automation

  33. Adding and Removing Instances Update a running role to have more or less instances Set-AzureRole –ServiceName "MySvc1" –Slot "Production" –RoleName "MyTestRole3" –Count 3

  34. 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

  35. 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 Custom Get-AzureVMImage | Where { $_.Category -eq 'Partner' } # Return Partner Images Get-AzureVMImage | Where { $_.OS -eq 'Windows' } # Return only Windows OS images Remove-AzureVMImage-ImageName 'myimg' -DeleteVHD# Delete image and storage Add-AzureVMImage-OS 'Windows' -ImageName 'MyWinImage' -MediaLocation 'http://storageaccount/vhds/winimage.vhd' # Add Existing VM Image from Storage • Microsoft, Partner and User Disks Get-AzureDisk# Return all Get-AzureDisk | Where { $_.AttachedTo -eq $null } # Return all not attached to a VM Get-AzureDisk | Where { $_.OS -eq $null } # Return only data disks Get-AzureDisk | Where { $_.OS -eq 'Windows' } # Return only Windows OS disks Remove-AzureDisk-DiskName 'mydisk' -DeleteVHD# Delete disk and storage Add-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 • OS Disks or Data Disks

  36. Batch Updating 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 }

  37. Demo Automating Scale Up of a Web Role with Powershell

  38. Get Started http://WindowsAzure.com

  39. Q&A

More Related