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

  • 相关阅读:
    CSDNReader(android客户端)发布!!
    linux下的C语言快速学习—从1+1开始。
    linux下的C语言快速学习—进程和文件
    ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)
    CSDN阅读器(android版)开发总结
    算法实现将一个输入的数字颠倒(输入12345>54321)
    linux下的C语言快速学习—计算机体系结构基础简单了解
    实现一个字符串查找子串的函数
    .net4.0面向对象学习笔记—数据类型
    装饰器模式
  • 原文地址:https://www.cnblogs.com/smallfox/p/10589513.html
Copyright © 2011-2022 走看看