Quantcast
Channel: Category Name
Viewing all articles
Browse latest Browse all 10804

Step through creating a Resource Manager-based Azure Virtual Machine with PowerShell

$
0
0

With Azure Service Management, many of the functions associated with creating a virtual machine, such a creating a network interface card and specifying the names of disk files stored in Azure, are automated on your behalf. With Azure Resource Manager, the manual construction of a Resource Manager-based virtual machine must take into account the separate compute, network, and storage components when building a new virtual machine.

For example, when you create a Resource Manager-based virtual machine with an Azure Resource Manager template, the template contains the instructions to create and associate all the compute, network, and storage resources together.

When you create a Resource Manager-based virtual machine with Azure PowerShell, you must build the set of Resource Manager-based PowerShell commands that request the required resources in the correct order. The new Create and preconfigure a Windows virtual machine with Resource Manager and Azure PowerShell article describes a process to build the PowerShell command set for a Resource Manager-based virtual machine. This process includes the following elements:

  • A resource group (required)
  • A storage account (required)
  • A virtual network (required)
  • An affinity group (optional)
  • A network interface card (NIC) and public IP address (both required)
  • A DNS domain name label (optional)
  • Additional data disks (optional)
  • The publisher, offer, and SKU of the Azure virtual machine image (required)
  • The operating system disk name (required)

Here is the resulting PowerShell command set created using the above elements for a virtual machine that:

  • Is in the existing LOBServers resource group
  • Uses the Windows Server 2012 R2 Datacenter image
  • Has the name LOB07 and is in the existing WEB_AS availability set
  • Has a NIC with a public IP address in the FrontEnd subnet (subnet index 0) of the existing AZDatacenter virtual network
  • Has an additional data disk of 200 GB
# Switch to the Resource Manager mode   
Switch-AzureMode AzureResourceManager

# Set values for existing resource group and storage account names
$rgName="LOBServers"
$locName="West US"
$saName="contosoLOBServersSA"

# Set the existing virtual network and subnet index
$vnetName="AZDatacenter"
$subnetIndex=0
$vnet=Get-AzurevirtualNetwork -Name $vnetName -ResourceGroupName $rgName

# Create the NIC
$nicName="AzureInterface"
$domName="contoso-vm-lob07"
$pip=New-AzurePublicIpAddress -Name $nicName -ResourceGroupName $rgName -DomainNameLabel $domName -Location $locName -AllocationMethod Dynamic
$nic=New-AzureNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $locName -SubnetId $vnet.Subnets[$subnetIndex].Id -PublicIpAddressId $pip.Id

# Specify the name, size, and existing availability set
$vmName="LOB07"
$vmSize="Standard_A3"
$avName="WEB_AS"
$avSet=Get-AzureAvailabilitySet –Name $avName –ResourceGroupName $rgName
$vm=New-AzureVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetId $avset.Id

# Add a 200 GB additional data disk
$diskSize=200
$diskLabel="APPStorage"
$diskName="21050529-DISK02"
$storageAcc=Get-AzureStorageAccount -ResourceGroupName $rgName -Name $saName
$vhdURI=$storageAcc.PrimaryEndpoints.Blob.ToString() + "vhds/" + $vmName + $diskName  + ".vhd"
Add-AzureVMDataDisk -VM $vm -Name $diskLabel -DiskSizeInGB $diskSize -VhdUri $vhdURI -CreateOption empty

# Specify the image and local administrator account, and then add the NIC
$pubName="MicrosoftWindowsServer"
$offerName="WindowsServer"
$skuName="2012-R2-Datacenter"
$cred=Get-Credential -Message "Type the name and password of the local administrator account." 
$vm=Set-AzureVMOperatingSystem -VM $vm -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$vm=Set-AzureVMSourceImage -VM $vm -PublisherName $pubName -Offer $offerName -Skus $skuName -Version "latest"
$vm=Add-AzureVMNetworkInterface -VM $vm -Id $nic.Id

# Specify the OS disk name and create the VM
$diskName="OSDisk"
$storageAcc=Get-AzureStorageAccount -ResourceGroupName $rgName -Name $saName
$osDiskUri=$storageAcc.PrimaryEndpoints.Blob.ToString() + "vhds/" + $vmName + $diskName  + ".vhd"
$vm=Set-AzureVMOSDisk -VM $vm -Name $diskName -VhdUri $osDiskUri -CreateOption fromImage
New-AzureVM -ResourceGroupName $rgName -Location $locName -VM $vm

Once you have created a command set for a VM that you intend to create over and over again, you can save it as a PowerShell script file (*.ps1) or turn it into an Azure automation runbook in the Automation section of the Azure Management Portal.

For more information, see Get Started with Azure Automation.

Enjoy!


Viewing all articles
Browse latest Browse all 10804

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>