Azure VMSS ---- PowerShell创建自定义镜像的VMSS集群

Posted hengzi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,可以非常方便的实现定制化。

以上是关于Azure VMSS ---- PowerShell创建自定义镜像的VMSS集群的主要内容,如果未能解决你的问题,请参考以下文章

Azure VMSS ---- PowerShell创建标准镜像的VMSS集群

使用 azure cli,vmss json 模板不会使用 datadisk 创建 vmss

Azure VMSS ---- PowerShell创建自定义镜像的VMSS集群

Azure VMSS 修改VM Template并创建VMSS

深入理解Azure自动扩展集VMSS

Azure Key Vault 从 VMSS 实例获取机密