New-​Azure​Rm​Vmss

Creates a VMSS.

Syntax

New-AzureRmVmss
   [-ResourceGroupName] <String>
   [-VirtualMachineScaleSet] <VirtualMachineScaleSet>
   -VMScaleSetName <String>
   [-Confirm]
   [-WhatIf]
   [<CommonParameters>]

Description

The New-AzureRmVmss cmdlet creates a Virtual Machine Scale Set (VMSS) in Azure. This cmdlet takes a VirtualMachineScaleSet object as input.

Examples

Example 1: Create a VMSS

# Common
$LOC = "WestUs";
$RGName = "rgkyvms";

New-AzureRmResourceGroup -Name $RGName -Location $LOC -Force;

# SRP
$STOName = "STO" + $RGName;
$STOType = "Standard_GRS";
New-AzureRmStorageAccount -ResourceGroupName $RGName -Name $STOName -Location $LOC -Type $STOType;
$STOAccount = Get-AzureRmStorageAccount -ResourceGroupName $RGName -Name $STOName; 

# NRP
$SubNet = New-AzureRmVirtualNetworkSubnetConfig -Name ("subnet" + $RGName) -AddressPrefix "10.0.0.0/24";
$VNet = New-AzureRmVirtualNetwork -Force -Name ("vnet" + $RGName) -ResourceGroupName $RGName -Location $LOC -AddressPrefix "10.0.0.0/16" -DnsServer "10.1.1.1" -Subnet $SubNet;
$VNet = Get-AzureRmVirtualNetwork -Name ('vnet' + $RGName) -ResourceGroupName $RGName;
$SubNetId = $VNet.Subnets[0].Id;

$PubIP = New-AzureRmPublicIpAddress -Force -Name ("PubIP" + $RGName) -ResourceGroupName $RGName -Location $LOC -AllocationMethod Dynamic -DomainNameLabel ("PubIP" + $RGName);
$PubIP = Get-AzureRmPublicIpAddress -Name ("PubIP"  + $RGName) -ResourceGroupName $RGName;

# Create LoadBalancer
$FrontendName = "fe" + $RGName
$BackendAddressPoolName = "bepool" + $RGName
$ProbeName = "vmssprobe" + $RGName
$InboundNatPoolName  = "innatpool" + $RGName
$LBRuleName = "lbrule" + $RGName
$LBName = "vmsslb" + $RGName

$Frontend = New-AzureRmLoadBalancerFrontendIpConfig -Name $FrontendName -PublicIpAddress $PubIP
$BackendAddressPool = New-AzureRmLoadBalancerBackendAddressPoolConfig -Name $BackendAddressPoolName
$Probe = New-AzureRmLoadBalancerProbeConfig -Name $ProbeName -RequestPath healthcheck.aspx -Protocol http -Port 80 -IntervalInSeconds 15 -ProbeCount 2
$InboundNatPool = New-AzureRmLoadBalancerInboundNatPoolConfig -Name $InboundNatPoolName  -FrontendIPConfigurationId `
    $Frontend.Id -Protocol Tcp -FrontendPortRangeStart 3360 -FrontendPortRangeEnd 3362 -BackendPort 3370;
$LBRule = New-AzureRmLoadBalancerRuleConfig -Name $LBRuleName `
    -FrontendIPConfiguration $Frontend -BackendAddressPool $BackendAddressPool `
    -Probe $Probe -Protocol Tcp -FrontendPort 80 -BackendPort 80 `
    -IdleTimeoutInMinutes 15 -EnableFloatingIP -LoadDistribution SourceIP;
$ActualLb = New-AzureRmLoadBalancer -Name $LBName -ResourceGroupName $RGName -Location $LOC `
    -FrontendIpConfiguration $Frontend -BackendAddressPool $BackendAddressPool `
    -Probe $Probe -LoadBalancingRule $LBRule -InboundNatPool $InboundNatPool;
$ExpectedLb = Get-AzureRmLoadBalancer -Name $LBName -ResourceGroupName $RGName

# New VMSS Parameters
$VMSSName = "VMSS" + $RGName;

$AdminUsername = "Admin01";
$AdminPassword = "p4ssw0rd@123" + $RGName;

$PublisherName = "MicrosoftWindowsServer" 
$Offer         = "WindowsServer" 
$Sku           = "2012-R2-Datacenter" 
$Version       = "latest"
        
$VHDContainer = "https://" + $STOName + ".blob.core.contoso.net/" + $VMSSName;

$ExtName = "CSETest";
$Publisher = "Microsoft.Compute";
$ExtType = "BGInfo";
$ExtVer = "2.1";

#IP Config for the NIC
$IPCfg = New-AzureRmVmssIPConfig -Name "Test" `
    -LoadBalancerInboundNatPoolsId $ExpectedLb.InboundNatPools[0].Id `
    -LoadBalancerBackendAddressPoolsId $ExpectedLb.BackendAddressPools[0].Id `
    -SubnetId $SubNetId;
            
#VMSS Config
$VMSS = New-AzureRmVmssConfig -Location $LOC -SkuCapacity 2 -SkuName "Standard_A2" -UpgradePolicyMode "Automatic" `
    | Add-AzureRmVmssNetworkInterfaceConfiguration -Name "Test" -Primary $True -IPConfiguration $IPCfg `
    | Add-AzureRmVmssNetworkInterfaceConfiguration -Name "Test2"  -IPConfiguration $IPCfg `
    | Set-AzureRmVmssOSProfile -ComputerNamePrefix "Test"  -AdminUsername $AdminUsername -AdminPassword $AdminPassword `
    | Set-AzureRmVmssStorageProfile -Name "Test"  -OsDiskCreateOption 'FromImage' -OsDiskCaching "None" `
    -ImageReferenceOffer $Offer -ImageReferenceSku $Sku -ImageReferenceVersion $Version `
    -ImageReferencePublisher $PublisherName -VhdContainer $VHDContainer `
    | Add-AzureRmVmssExtension -Name $ExtName -Publisher $Publisher -Type $ExtType -TypeHandlerVersion $ExtVer -AutoUpgradeMinorVersion $True

#Create the VMSS
New-AzureRmVmss -ResourceGroupName $RGName -Name $VMSSName -VirtualMachineScaleSet $VMSS;

The following complex example creates a VMSS. The first command creates a resource group with the specified name and location. The second command uses the New-AzureRmStorageAccount cmdlet to create a storage account. The third command then uses the Get-AzureRmStorageAccount cmdlet to get the storage account created in the second command and stores the result in the $STOAccount variable. The fifth command uses the New-AzureRmVirtualNetworkSubnetConfig cmdlet to create a subnet and stores the result in the variable named $SubNet. The sixth command uses the New-AzureRmVirtualNetwork cmdlet to create a virtual network and stores the result in the variable named $VNet. The seventh command uses the Get-AzureRmVirtualNetwork to get information about the virtual network created in the sixth command and stores the information in the variable named $VNet. The eighth and ninth command uses the New-AzureRmPublicIpAddress and Get- AzureRmPublicIpAddress to create and get information from that public IP address. The commands store the information in the variable named $PubIP. The tenth command uses the New- AzureRmLoadBalancerFrontendIpConfig cmdlet to create a frontend load balancer and stores the result in the variable named $Frontend. The eleventh command uses the New-AzureRmLoadBalancerBackendAddressPoolConfig to create a backend address pool configuration and stores the result in the variable named $BackendAddressPool. The twelfth command uses the New-AzureRmLoadBalancerProbeConfig to create a probe and stores the probe information in the variable named $Probe. The thirteenth command uses the New-AzureRmLoadBalancerInboundNatPoolConfig cmdlet to create a load balancer inbound network address translation (NAT) pool configuration. The fourteenth command uses the New-AzureRmLoadBalancerRuleConfig to create a load balancer rule configuration and stores the result in the variable named $LBRule. The fifteenth command uses the New-AzureRmLoadBalancer cmdlet to create a load balancer and stores the result in the variable named $ActualLb. The sixteenth command uses the Get-AzureRmLoadBalancer to get information about the load balancer that was created in the fifteenth command and stores the information in the variable named $ExpectedLb. The seventeenth command uses the New-AzureRmVmssIPConfig cmdlet to create a VMSS IP configuration and stores the information in the variable named $IPCfg. The eighteenth command uses the New-AzureRmVmssConfig cmdlet to create a VMSS configuration object and stores the result in the variable named $VMSS. The nineteenth command uses the New-AzureRmVmss cmdlet to create the VMSS.

Required Parameters

-ResourceGroupName

Specifies the name of the resource group of the VMSS.

Type:String
Position:1
Default value:None
Accept pipeline input:True (ByPropertyName)
Accept wildcard characters:False
-VMScaleSetName

Specifies the name of the VMSS that this cmdlet creates.

Type:String
Aliases:Name
Position:Named
Default value:None
Accept pipeline input:True (ByPropertyName)
Accept wildcard characters:False
-VirtualMachineScaleSet

Specifies the VirtualMachineScaleSet object that contains the properties of the VMSS that this cmdlet creates.

Type:VirtualMachineScaleSet
Position:3
Default value:None
Accept pipeline input:True (ByValue)
Accept wildcard characters:False

Optional Parameters

-Confirm

Prompts you for confirmation before running the cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-WhatIf

Shows what would happen if the cmdlet runs.

The cmdlet is not run.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Outputs

This cmdlet does not generate any output.