zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    Android 内存溢出解决方案(OOM) 整理总结
    浅思OC的语言特性
    netsh winsock reset 11003
    Utility
    百度地图手机四角坐标
    Mysql 导入 MSSQL
    Python import 指定目录中的模块
    POJ:3061-Subsequence(尺取法模板详解)
    POJ:3616-Milking Time
    POJ:2385-Apple Catching(dp经典题)
  • 原文地址:https://www.cnblogs.com/smallfox/p/10589513.html
Copyright © 2011-2022 走看看