前面一篇文章介紹瞭如何用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,可以非常方便的實現定製化。