2 Years as MVP, 5 Years as Microsoft Field Engineer, recently took role as Azure specialist 12 years in dev focused roles like architect, web developer lots of work with large enterprises in the US 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 In 2010, the family moves to Atlanta, GA from Tampa, FL Active speaker, writer, blogger developertofu.com or @DeveloperTofu A fun challenge, coaching a 5 and under girls team Cloud Computing Patterns Comprehensive set of services that enable you to quickly build, deploy and manage applications across a global network of Microsoft-managed datacenters 99.95% compute application building blocks infrastructure for building and running your applications Manage SQL Databases, Configuration, Diagnostics, Deployments, and Azure assets (Affinity Groups, Storage Accounts, Keys, etc..) Query, Manage and Configure Virtual Machines across multiple subscriptions, cloud services and storage accounts. http://windows.azure.com/download/publishprofile.aspx # Perform Management Operation Against Each Subscription Supports VM Creation in a Single Cmdlet Provision With: Endpoints, Data Disks Configure: Cache Settings for OS/Data Disks and Subnet Names Get-AzureStorageAccount | Select StorageAccountName 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 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 | ft ServiceName, Name, InstanceStatus } The name of the Virtual Machine The availability set (used for high availability) 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 -Protocol tcp | New-AzureVM -ServiceName $newSvc -Location $location 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 $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 Update a running role to have more or less instances Set-AzureRole –ServiceName "MySvc1" –Slot "Production" –RoleName "MyTestRole3" –Count 3 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 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 }