代码改变世界

通过非托管自定义镜像创建VM

2018-10-23 18:00 WangSong技术点滴 阅读(...) 评论(...) 编辑 收藏

通过非托管自定义镜像创建VM

  官网有很多文档介绍如何创建自定义镜像,之前support一个客户,已经使用Azure两年多,很多机器都是非托管磁盘,所以帮客户去测试使用通过非托管自定义镜像创建VM,整个脚本很简单,只需要改掉一个参数就可以实现,但是因为没有直接文档说明,当时花了时间去测试,所以直接把成功脚本分享给大家使用,批量创建自定义非托管磁盘VM也只是需要修改imageurl即可,托管磁盘创建晚点分享给大家。

  1. 脚本如下:

$rgName = "myResourceGroup"

$subnetName = "mySubNet"

$singleSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24

$location = "China North"

$vnetName = "myVnetName"

$vnet = New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location `

    -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet

    $ipName = "myIP"

$pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `

    -AllocationMethod Dynamic

    $nicName = "myNicName"

$nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName `

-Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id

$nsgName = "myNsg"

 

$rdpRule = New-AzureRmNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" `

    -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `

    -SourceAddressPrefix Internet -SourcePortRange * `

    -DestinationAddressPrefix * -DestinationPortRange 3389

$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Location $location `

    -Name $nsgName -SecurityRules $rdpRule

    $vmName = "myVM"

$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize "Standard_A2"

$vm = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id

$osDiskUri = "https://xxxxxxxxxxxx.vhd" ,改成自己的vhd url

$osDiskName = $vmName + "osDisk"

$vm = Set-AzureRmVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption attach -Linux

 

通过Powershell,就可以创建出来,最后三行是重点,尤其是attach -Linux,如果是windows,就是attach -Windows。