【Azure】通过Image批量创建虚拟机PowerShell脚本

最近需要帮助学院制作统一的运行环境,为此研究了通过Azure创建的的虚拟机安装好需要的工具后,制作Image,并批量创建虚拟机的操作。

  1. 需要通用化我们的模板虚拟机;
    1. 这里参考官网文档,Windows 还是 Linux
      1. https://docs.azure.cn/zh-cn/virtual-machines/windows/capture-image-resource
      2. https://docs.azure.cn/zh-cn/virtual-machines/linux/capture-image

需要注意的是:通用化的过程是不可逆的,请慎重使用,如果不希望影响本地低级,可以创建副本后的虚拟机,在继续次操作。

  1. 继续镜像捕捉的操作,在门户中即可完成;如果没有继续通用化,捕获会失败

clip_image001

  1. 成功后,在镜像中会看到自己捕获的镜像

clip_image002

  1. 接下来,你可以基于镜像创建所需要的虚拟机了,可以通过以下脚本创建虚拟机;

#设置初始变量

$cred = Get-Credential

$rgName = "XXXXX"

$location = "Chinaeast2"

$imageName = "imagevm-image-20190322202911"

$storageType = 'Standard_LRS'

$myVnet = "XXXXX"

$nsgName = "imagevm-nsg"

$vmSize = "Standard_D4s_v3"

#读取镜像文件、虚拟网络、网络安全组信息

$image = Get-AzureRMImage -ImageName $imageName -ResourceGroupName $rgName

$vnet = Get-AzureRmVirtualNetwork -Name $myVnet -ResourceGroupName $rgName

$nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Name $nsgName

#使用循环创建VM,默认数量为2(可调整)

for($i=1;$i –le 2;$i++)

{

#设置虚拟机名称变量

$vmName = "testVM" +$i;

$nicName = "$vmName-Nic" ;

$dataDiskName = "$vmName-DataDisk01" ;

$ipName = "$vmName-Pip";

#建立虚拟网卡

$pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location -AllocationMethod Dynamic ;

$nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id ;

#设置并建立500GB的附加数据磁盘

$diskConfig = New-AzureRmDiskConfig -SkuName $storageType -Location $location -CreateOption Empty -DiskSizeGB 500 ;

$dataDisk1 = New-AzureRmDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName $rgName ;

#建立VM配置文件

$vm = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize;

$vm = Set-AzureRmVMSourceImage -VM $vm -Id $image.Id ;

$vm = Set-AzureRmVMOSDisk -VM $vm -StorageAccountType $storageType -DiskSizeInGB 128 -CreateOption FromImage -Caching ReadWrite ;

$vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate ;

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

$vm = Add-AzureRmVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1 ;

#建立VM

New-AzureRmVM -VM $vm -ResourceGroupName $rgName -Location $location -AsJob;

}

clip_image003

猜你喜欢

转载自www.cnblogs.com/smallfox/p/10589513.html