1. 程式人生 > >Azure VMSS ---- PowerShell創建自定義鏡像的VMSS集群

Azure VMSS ---- PowerShell創建自定義鏡像的VMSS集群

.html svm mss -o ddr 方便 creat cit ctu

前面一篇文章介紹了如何用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

具體腳本如下:

$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,可以非常方便的實現定制化。

Azure VMSS ---- PowerShell創建自定義鏡像的VMSS集群