zoukankan      html  css  js  c++  java
  • Azure VMSS ---- PowerShell创建自定义镜像的VMSS集群

    前面一篇文章介绍了如何用PowerShell创建标准镜像的VMSS集群。http://www.cnblogs.com/hengwei/p/7391178.html

    本文将介绍,如何用PowerShell创建自定义镜像的VMSS集群。

    1 创建VM,对其进行个性化配置,比如安装httpd,增加Date Disk等,并把此VM捕获成Image

    2 以这个Image创建VMSS集群

    一 创建并捕获Image

    这个操作在前面的文章中也介绍过:

    http://www.cnblogs.com/hengwei/p/7348453.html

    采用的是Azure CLI工具实现的。

    客户化的工作包括:

    1 安装了httpd

    2 配置了fstab自动挂载/dev/sdc1到/var/www/html

    3 在/var/www/html中创建index.html文件

    4 关闭防火墙和selinux

    原理都相同,这里就不多介绍了。只是介绍一下PowerShell捕获Image的相关命令:

    Set-AzureRmVM -ResourceGroupName hwvmssp -Name hwimage -Generalized -Verbose
    $vm = $vm = get-azurermvm -ResourceGroupName hwvmssp -Name hwimage
    $image = New-AzureRmImageConfig -Location chinanorth -SourceVirtualMachineId $vm.Id
    New-AzureRmImage -ResourceGroupName hwvmssp -ImageName vmssimage -Image $image

    或者直接在Portal上捕获:

    二 创建自定义镜像的VMSS集群

    在前文中,创建了相应的Vnet、SLB,我们还采用原有的网络资源。具体的创建方法,可以参考:

    http://www.cnblogs.com/hengwei/p/7391178.html

    具体脚本如下:

     

    $loc = 'chinanorth';
    $rgname = 'hwvmssp';
    
    $vnet = Get-AzureRmVirtualNetwork -Name $rgname -ResourceGroupName $rgname;
    $subnetName = 'vlan1'
    $subnetId = $vnet.Subnets[0].Id;
    
    $pubip = Get-AzureRmPublicIpAddress -Name ('pubip' + $rgname) -ResourceGroupName $rgname;
    $lbName = 'vmsslb' + $rgname
    $actualLb = Get-AzureRmLoadBalancer -Name $lbName -ResourceGroupName $rgname
    
    $vmssName = $rgname;
    
    $adminUsername = 'hengwei';
    $adminPassword = "xxxx";
    $vmNamePrefix = 'centosvmss'
    
    $ipCfg = New-AzureRmVmssIPConfig -Name 'nic' `
      -LoadBalancerInboundNatPoolsId $actualLb.InboundNatPools[0].Id `
      -LoadBalancerBackendAddressPoolsId $actualLb.BackendAddressPools[0].Id `
      -SubnetId $subnetId;
    
    $numberofnodes = 2
    $image = Get-AzureRmImage -ResourceGroupName hwvmssp -ImageName vmssimage
    $vmss = New-AzureRmVmssConfig -Location $loc -SkuCapacity $numberofnodes `
      -SkuName 'Standard_D1' -UpgradePolicyMode 'automatic' `
      
    | Add-AzureRmVmssNetworkInterfaceConfiguration -Name $subnetName `
        -Primary $true -IPConfiguration $ipCfg `
      
    | Set-AzureRmVmssOSProfile -ComputerNamePrefix $vmNamePrefix `
        -AdminUsername $adminUsername -AdminPassword $adminPassword `
      
    | Set-AzureRmVmssStorageProfile -OsDiskCreateOption 'FromImage' `
        -OsDiskCaching 'None' -OsDiskOsType Linux ·
        -ManagedDisk StandardLRS -ImageReferenceId $image.Id New-AzureRmVmss -ResourceGroupName $rgname -Name $vmssName ·
      -VirtualMachineScaleSet $vmss

     

     

    创建好后,登录Instance,可以看到之前Image中做的客户化工作还都在:

    网页也可以打开:

    总结:

    通过自定义的Image创建VMSS,可以非常方便的实现定制化。

  • 相关阅读:
    CCS
    CCS
    CCS
    CCS
    CCS
    CCS
    CCS
    CCS
    Java之内部类
    Java之回调模式和ThreadLocal
  • 原文地址:https://www.cnblogs.com/hengwei/p/7392713.html
Copyright © 2011-2022 走看看