
com.pulumi.azure.compute.kotlin.ScaleSet.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pulumi-azure-kotlin Show documentation
Show all versions of pulumi-azure-kotlin Show documentation
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.azure.compute.kotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetBootDiagnostics
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetExtension
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetIdentity
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetNetworkProfile
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetOsProfile
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetOsProfileLinuxConfig
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetOsProfileSecret
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetOsProfileWindowsConfig
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetPlan
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetRollingUpgradePolicy
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetSku
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetStorageProfileDataDisk
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetStorageProfileImageReference
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetStorageProfileOsDisk
import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetBootDiagnostics.Companion.toKotlin as scaleSetBootDiagnosticsToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetExtension.Companion.toKotlin as scaleSetExtensionToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetIdentity.Companion.toKotlin as scaleSetIdentityToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetNetworkProfile.Companion.toKotlin as scaleSetNetworkProfileToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetOsProfile.Companion.toKotlin as scaleSetOsProfileToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetOsProfileLinuxConfig.Companion.toKotlin as scaleSetOsProfileLinuxConfigToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetOsProfileSecret.Companion.toKotlin as scaleSetOsProfileSecretToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetOsProfileWindowsConfig.Companion.toKotlin as scaleSetOsProfileWindowsConfigToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetPlan.Companion.toKotlin as scaleSetPlanToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetRollingUpgradePolicy.Companion.toKotlin as scaleSetRollingUpgradePolicyToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetSku.Companion.toKotlin as scaleSetSkuToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetStorageProfileDataDisk.Companion.toKotlin as scaleSetStorageProfileDataDiskToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetStorageProfileImageReference.Companion.toKotlin as scaleSetStorageProfileImageReferenceToKotlin
import com.pulumi.azure.compute.kotlin.outputs.ScaleSetStorageProfileOsDisk.Companion.toKotlin as scaleSetStorageProfileOsDiskToKotlin
/**
* Builder for [ScaleSet].
*/
@PulumiTagMarker
public class ScaleSetResourceBuilder internal constructor() {
public var name: String? = null
public var args: ScaleSetArgs = ScaleSetArgs()
public var opts: CustomResourceOptions = CustomResourceOptions()
/**
* @param name The _unique_ name of the resulting resource.
*/
public fun name(`value`: String) {
this.name = value
}
/**
* @param block The arguments to use to populate this resource's properties.
*/
public suspend fun args(block: suspend ScaleSetArgsBuilder.() -> Unit) {
val builder = ScaleSetArgsBuilder()
block(builder)
this.args = builder.build()
}
/**
* @param block A bag of options that control this resource's behavior.
*/
public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
}
internal fun build(): ScaleSet {
val builtJavaResource = com.pulumi.azure.compute.ScaleSet(
this.name,
this.args.toJava(),
this.opts.toJava(),
)
return ScaleSet(builtJavaResource)
}
}
/**
* Manages a virtual machine scale set.
* ## Example Usage
* ### With Managed Disks (Recommended)
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as azure from "@pulumi/azure";
* import * as std from "@pulumi/std";
* const example = new azure.core.ResourceGroup("example", {
* name: "example-resources",
* location: "West Europe",
* });
* const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
* name: "acctvn",
* addressSpaces: ["10.0.0.0/16"],
* location: example.location,
* resourceGroupName: example.name,
* });
* const exampleSubnet = new azure.network.Subnet("example", {
* name: "acctsub",
* resourceGroupName: example.name,
* virtualNetworkName: exampleVirtualNetwork.name,
* addressPrefixes: ["10.0.2.0/24"],
* });
* const examplePublicIp = new azure.network.PublicIp("example", {
* name: "test",
* location: example.location,
* resourceGroupName: example.name,
* allocationMethod: "Static",
* domainNameLabel: example.name,
* tags: {
* environment: "staging",
* },
* });
* const exampleLoadBalancer = new azure.lb.LoadBalancer("example", {
* name: "test",
* location: example.location,
* resourceGroupName: example.name,
* frontendIpConfigurations: [{
* name: "PublicIPAddress",
* publicIpAddressId: examplePublicIp.id,
* }],
* });
* const bpepool = new azure.lb.BackendAddressPool("bpepool", {
* loadbalancerId: exampleLoadBalancer.id,
* name: "BackEndAddressPool",
* });
* const lbnatpool = new azure.lb.NatPool("lbnatpool", {
* resourceGroupName: example.name,
* name: "ssh",
* loadbalancerId: exampleLoadBalancer.id,
* protocol: "Tcp",
* frontendPortStart: 50000,
* frontendPortEnd: 50119,
* backendPort: 22,
* frontendIpConfigurationName: "PublicIPAddress",
* });
* const exampleProbe = new azure.lb.Probe("example", {
* loadbalancerId: exampleLoadBalancer.id,
* name: "http-probe",
* protocol: "Http",
* requestPath: "/health",
* port: 8080,
* });
* const exampleScaleSet = new azure.compute.ScaleSet("example", {
* name: "mytestscaleset-1",
* location: example.location,
* resourceGroupName: example.name,
* automaticOsUpgrade: true,
* upgradePolicyMode: "Rolling",
* rollingUpgradePolicy: {
* maxBatchInstancePercent: 20,
* maxUnhealthyInstancePercent: 20,
* maxUnhealthyUpgradedInstancePercent: 5,
* pauseTimeBetweenBatches: "PT0S",
* },
* healthProbeId: exampleProbe.id,
* sku: {
* name: "Standard_F2",
* tier: "Standard",
* capacity: 2,
* },
* storageProfileImageReference: {
* publisher: "Canonical",
* offer: "0001-com-ubuntu-server-jammy",
* sku: "22_04-lts",
* version: "latest",
* },
* storageProfileOsDisk: {
* name: "",
* caching: "ReadWrite",
* createOption: "FromImage",
* managedDiskType: "Standard_LRS",
* },
* storageProfileDataDisks: [{
* lun: 0,
* caching: "ReadWrite",
* createOption: "Empty",
* diskSizeGb: 10,
* }],
* osProfile: {
* computerNamePrefix: "testvm",
* adminUsername: "myadmin",
* },
* osProfileLinuxConfig: {
* disablePasswordAuthentication: true,
* sshKeys: [{
* path: "/home/myadmin/.ssh/authorized_keys",
* keyData: std.file({
* input: "~/.ssh/demo_key.pub",
* }).then(invoke => invoke.result),
* }],
* },
* networkProfiles: [{
* name: "mynetworkprofile",
* primary: true,
* ipConfigurations: [{
* name: "TestIPConfiguration",
* primary: true,
* subnetId: exampleSubnet.id,
* loadBalancerBackendAddressPoolIds: [bpepool.id],
* loadBalancerInboundNatRulesIds: [lbnatpool.id],
* }],
* }],
* tags: {
* environment: "staging",
* },
* });
* ```
* ```python
* import pulumi
* import pulumi_azure as azure
* import pulumi_std as std
* example = azure.core.ResourceGroup("example",
* name="example-resources",
* location="West Europe")
* example_virtual_network = azure.network.VirtualNetwork("example",
* name="acctvn",
* address_spaces=["10.0.0.0/16"],
* location=example.location,
* resource_group_name=example.name)
* example_subnet = azure.network.Subnet("example",
* name="acctsub",
* resource_group_name=example.name,
* virtual_network_name=example_virtual_network.name,
* address_prefixes=["10.0.2.0/24"])
* example_public_ip = azure.network.PublicIp("example",
* name="test",
* location=example.location,
* resource_group_name=example.name,
* allocation_method="Static",
* domain_name_label=example.name,
* tags={
* "environment": "staging",
* })
* example_load_balancer = azure.lb.LoadBalancer("example",
* name="test",
* location=example.location,
* resource_group_name=example.name,
* frontend_ip_configurations=[{
* "name": "PublicIPAddress",
* "public_ip_address_id": example_public_ip.id,
* }])
* bpepool = azure.lb.BackendAddressPool("bpepool",
* loadbalancer_id=example_load_balancer.id,
* name="BackEndAddressPool")
* lbnatpool = azure.lb.NatPool("lbnatpool",
* resource_group_name=example.name,
* name="ssh",
* loadbalancer_id=example_load_balancer.id,
* protocol="Tcp",
* frontend_port_start=50000,
* frontend_port_end=50119,
* backend_port=22,
* frontend_ip_configuration_name="PublicIPAddress")
* example_probe = azure.lb.Probe("example",
* loadbalancer_id=example_load_balancer.id,
* name="http-probe",
* protocol="Http",
* request_path="/health",
* port=8080)
* example_scale_set = azure.compute.ScaleSet("example",
* name="mytestscaleset-1",
* location=example.location,
* resource_group_name=example.name,
* automatic_os_upgrade=True,
* upgrade_policy_mode="Rolling",
* rolling_upgrade_policy={
* "max_batch_instance_percent": 20,
* "max_unhealthy_instance_percent": 20,
* "max_unhealthy_upgraded_instance_percent": 5,
* "pause_time_between_batches": "PT0S",
* },
* health_probe_id=example_probe.id,
* sku={
* "name": "Standard_F2",
* "tier": "Standard",
* "capacity": 2,
* },
* storage_profile_image_reference={
* "publisher": "Canonical",
* "offer": "0001-com-ubuntu-server-jammy",
* "sku": "22_04-lts",
* "version": "latest",
* },
* storage_profile_os_disk={
* "name": "",
* "caching": "ReadWrite",
* "create_option": "FromImage",
* "managed_disk_type": "Standard_LRS",
* },
* storage_profile_data_disks=[{
* "lun": 0,
* "caching": "ReadWrite",
* "create_option": "Empty",
* "disk_size_gb": 10,
* }],
* os_profile={
* "computer_name_prefix": "testvm",
* "admin_username": "myadmin",
* },
* os_profile_linux_config={
* "disable_password_authentication": True,
* "ssh_keys": [{
* "path": "/home/myadmin/.ssh/authorized_keys",
* "key_data": std.file(input="~/.ssh/demo_key.pub").result,
* }],
* },
* network_profiles=[{
* "name": "mynetworkprofile",
* "primary": True,
* "ip_configurations": [{
* "name": "TestIPConfiguration",
* "primary": True,
* "subnet_id": example_subnet.id,
* "load_balancer_backend_address_pool_ids": [bpepool.id],
* "load_balancer_inbound_nat_rules_ids": [lbnatpool.id],
* }],
* }],
* tags={
* "environment": "staging",
* })
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using Azure = Pulumi.Azure;
* using Std = Pulumi.Std;
* return await Deployment.RunAsync(() =>
* {
* var example = new Azure.Core.ResourceGroup("example", new()
* {
* Name = "example-resources",
* Location = "West Europe",
* });
* var exampleVirtualNetwork = new Azure.Network.VirtualNetwork("example", new()
* {
* Name = "acctvn",
* AddressSpaces = new[]
* {
* "10.0.0.0/16",
* },
* Location = example.Location,
* ResourceGroupName = example.Name,
* });
* var exampleSubnet = new Azure.Network.Subnet("example", new()
* {
* Name = "acctsub",
* ResourceGroupName = example.Name,
* VirtualNetworkName = exampleVirtualNetwork.Name,
* AddressPrefixes = new[]
* {
* "10.0.2.0/24",
* },
* });
* var examplePublicIp = new Azure.Network.PublicIp("example", new()
* {
* Name = "test",
* Location = example.Location,
* ResourceGroupName = example.Name,
* AllocationMethod = "Static",
* DomainNameLabel = example.Name,
* Tags =
* {
* { "environment", "staging" },
* },
* });
* var exampleLoadBalancer = new Azure.Lb.LoadBalancer("example", new()
* {
* Name = "test",
* Location = example.Location,
* ResourceGroupName = example.Name,
* FrontendIpConfigurations = new[]
* {
* new Azure.Lb.Inputs.LoadBalancerFrontendIpConfigurationArgs
* {
* Name = "PublicIPAddress",
* PublicIpAddressId = examplePublicIp.Id,
* },
* },
* });
* var bpepool = new Azure.Lb.BackendAddressPool("bpepool", new()
* {
* LoadbalancerId = exampleLoadBalancer.Id,
* Name = "BackEndAddressPool",
* });
* var lbnatpool = new Azure.Lb.NatPool("lbnatpool", new()
* {
* ResourceGroupName = example.Name,
* Name = "ssh",
* LoadbalancerId = exampleLoadBalancer.Id,
* Protocol = "Tcp",
* FrontendPortStart = 50000,
* FrontendPortEnd = 50119,
* BackendPort = 22,
* FrontendIpConfigurationName = "PublicIPAddress",
* });
* var exampleProbe = new Azure.Lb.Probe("example", new()
* {
* LoadbalancerId = exampleLoadBalancer.Id,
* Name = "http-probe",
* Protocol = "Http",
* RequestPath = "/health",
* Port = 8080,
* });
* var exampleScaleSet = new Azure.Compute.ScaleSet("example", new()
* {
* Name = "mytestscaleset-1",
* Location = example.Location,
* ResourceGroupName = example.Name,
* AutomaticOsUpgrade = true,
* UpgradePolicyMode = "Rolling",
* RollingUpgradePolicy = new Azure.Compute.Inputs.ScaleSetRollingUpgradePolicyArgs
* {
* MaxBatchInstancePercent = 20,
* MaxUnhealthyInstancePercent = 20,
* MaxUnhealthyUpgradedInstancePercent = 5,
* PauseTimeBetweenBatches = "PT0S",
* },
* HealthProbeId = exampleProbe.Id,
* Sku = new Azure.Compute.Inputs.ScaleSetSkuArgs
* {
* Name = "Standard_F2",
* Tier = "Standard",
* Capacity = 2,
* },
* StorageProfileImageReference = new Azure.Compute.Inputs.ScaleSetStorageProfileImageReferenceArgs
* {
* Publisher = "Canonical",
* Offer = "0001-com-ubuntu-server-jammy",
* Sku = "22_04-lts",
* Version = "latest",
* },
* StorageProfileOsDisk = new Azure.Compute.Inputs.ScaleSetStorageProfileOsDiskArgs
* {
* Name = "",
* Caching = "ReadWrite",
* CreateOption = "FromImage",
* ManagedDiskType = "Standard_LRS",
* },
* StorageProfileDataDisks = new[]
* {
* new Azure.Compute.Inputs.ScaleSetStorageProfileDataDiskArgs
* {
* Lun = 0,
* Caching = "ReadWrite",
* CreateOption = "Empty",
* DiskSizeGb = 10,
* },
* },
* OsProfile = new Azure.Compute.Inputs.ScaleSetOsProfileArgs
* {
* ComputerNamePrefix = "testvm",
* AdminUsername = "myadmin",
* },
* OsProfileLinuxConfig = new Azure.Compute.Inputs.ScaleSetOsProfileLinuxConfigArgs
* {
* DisablePasswordAuthentication = true,
* SshKeys = new[]
* {
* new Azure.Compute.Inputs.ScaleSetOsProfileLinuxConfigSshKeyArgs
* {
* Path = "/home/myadmin/.ssh/authorized_keys",
* KeyData = Std.File.Invoke(new()
* {
* Input = "~/.ssh/demo_key.pub",
* }).Apply(invoke => invoke.Result),
* },
* },
* },
* NetworkProfiles = new[]
* {
* new Azure.Compute.Inputs.ScaleSetNetworkProfileArgs
* {
* Name = "mynetworkprofile",
* Primary = true,
* IpConfigurations = new[]
* {
* new Azure.Compute.Inputs.ScaleSetNetworkProfileIpConfigurationArgs
* {
* Name = "TestIPConfiguration",
* Primary = true,
* SubnetId = exampleSubnet.Id,
* LoadBalancerBackendAddressPoolIds = new[]
* {
* bpepool.Id,
* },
* LoadBalancerInboundNatRulesIds = new[]
* {
* lbnatpool.Id,
* },
* },
* },
* },
* },
* Tags =
* {
* { "environment", "staging" },
* },
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-azure/sdk/v5/go/azure/compute"
* "github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
* "github.com/pulumi/pulumi-azure/sdk/v5/go/azure/lb"
* "github.com/pulumi/pulumi-azure/sdk/v5/go/azure/network"
* "github.com/pulumi/pulumi-std/sdk/go/std"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
* Name: pulumi.String("example-resources"),
* Location: pulumi.String("West Europe"),
* })
* if err != nil {
* return err
* }
* exampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, "example", &network.VirtualNetworkArgs{
* Name: pulumi.String("acctvn"),
* AddressSpaces: pulumi.StringArray{
* pulumi.String("10.0.0.0/16"),
* },
* Location: example.Location,
* ResourceGroupName: example.Name,
* })
* if err != nil {
* return err
* }
* exampleSubnet, err := network.NewSubnet(ctx, "example", &network.SubnetArgs{
* Name: pulumi.String("acctsub"),
* ResourceGroupName: example.Name,
* VirtualNetworkName: exampleVirtualNetwork.Name,
* AddressPrefixes: pulumi.StringArray{
* pulumi.String("10.0.2.0/24"),
* },
* })
* if err != nil {
* return err
* }
* examplePublicIp, err := network.NewPublicIp(ctx, "example", &network.PublicIpArgs{
* Name: pulumi.String("test"),
* Location: example.Location,
* ResourceGroupName: example.Name,
* AllocationMethod: pulumi.String("Static"),
* DomainNameLabel: example.Name,
* Tags: pulumi.StringMap{
* "environment": pulumi.String("staging"),
* },
* })
* if err != nil {
* return err
* }
* exampleLoadBalancer, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{
* Name: pulumi.String("test"),
* Location: example.Location,
* ResourceGroupName: example.Name,
* FrontendIpConfigurations: lb.LoadBalancerFrontendIpConfigurationArray{
* &lb.LoadBalancerFrontendIpConfigurationArgs{
* Name: pulumi.String("PublicIPAddress"),
* PublicIpAddressId: examplePublicIp.ID(),
* },
* },
* })
* if err != nil {
* return err
* }
* bpepool, err := lb.NewBackendAddressPool(ctx, "bpepool", &lb.BackendAddressPoolArgs{
* LoadbalancerId: exampleLoadBalancer.ID(),
* Name: pulumi.String("BackEndAddressPool"),
* })
* if err != nil {
* return err
* }
* lbnatpool, err := lb.NewNatPool(ctx, "lbnatpool", &lb.NatPoolArgs{
* ResourceGroupName: example.Name,
* Name: pulumi.String("ssh"),
* LoadbalancerId: exampleLoadBalancer.ID(),
* Protocol: pulumi.String("Tcp"),
* FrontendPortStart: pulumi.Int(50000),
* FrontendPortEnd: pulumi.Int(50119),
* BackendPort: pulumi.Int(22),
* FrontendIpConfigurationName: pulumi.String("PublicIPAddress"),
* })
* if err != nil {
* return err
* }
* exampleProbe, err := lb.NewProbe(ctx, "example", &lb.ProbeArgs{
* LoadbalancerId: exampleLoadBalancer.ID(),
* Name: pulumi.String("http-probe"),
* Protocol: pulumi.String("Http"),
* RequestPath: pulumi.String("/health"),
* Port: pulumi.Int(8080),
* })
* if err != nil {
* return err
* }
* invokeFile, err := std.File(ctx, &std.FileArgs{
* Input: "~/.ssh/demo_key.pub",
* }, nil)
* if err != nil {
* return err
* }
* _, err = compute.NewScaleSet(ctx, "example", &compute.ScaleSetArgs{
* Name: pulumi.String("mytestscaleset-1"),
* Location: example.Location,
* ResourceGroupName: example.Name,
* AutomaticOsUpgrade: pulumi.Bool(true),
* UpgradePolicyMode: pulumi.String("Rolling"),
* RollingUpgradePolicy: &compute.ScaleSetRollingUpgradePolicyArgs{
* MaxBatchInstancePercent: pulumi.Int(20),
* MaxUnhealthyInstancePercent: pulumi.Int(20),
* MaxUnhealthyUpgradedInstancePercent: pulumi.Int(5),
* PauseTimeBetweenBatches: pulumi.String("PT0S"),
* },
* HealthProbeId: exampleProbe.ID(),
* Sku: &compute.ScaleSetSkuArgs{
* Name: pulumi.String("Standard_F2"),
* Tier: pulumi.String("Standard"),
* Capacity: pulumi.Int(2),
* },
* StorageProfileImageReference: &compute.ScaleSetStorageProfileImageReferenceArgs{
* Publisher: pulumi.String("Canonical"),
* Offer: pulumi.String("0001-com-ubuntu-server-jammy"),
* Sku: pulumi.String("22_04-lts"),
* Version: pulumi.String("latest"),
* },
* StorageProfileOsDisk: &compute.ScaleSetStorageProfileOsDiskArgs{
* Name: pulumi.String(""),
* Caching: pulumi.String("ReadWrite"),
* CreateOption: pulumi.String("FromImage"),
* ManagedDiskType: pulumi.String("Standard_LRS"),
* },
* StorageProfileDataDisks: compute.ScaleSetStorageProfileDataDiskArray{
* &compute.ScaleSetStorageProfileDataDiskArgs{
* Lun: pulumi.Int(0),
* Caching: pulumi.String("ReadWrite"),
* CreateOption: pulumi.String("Empty"),
* DiskSizeGb: pulumi.Int(10),
* },
* },
* OsProfile: &compute.ScaleSetOsProfileArgs{
* ComputerNamePrefix: pulumi.String("testvm"),
* AdminUsername: pulumi.String("myadmin"),
* },
* OsProfileLinuxConfig: &compute.ScaleSetOsProfileLinuxConfigArgs{
* DisablePasswordAuthentication: pulumi.Bool(true),
* SshKeys: compute.ScaleSetOsProfileLinuxConfigSshKeyArray{
* &compute.ScaleSetOsProfileLinuxConfigSshKeyArgs{
* Path: pulumi.String("/home/myadmin/.ssh/authorized_keys"),
* KeyData: pulumi.String(invokeFile.Result),
* },
* },
* },
* NetworkProfiles: compute.ScaleSetNetworkProfileArray{
* &compute.ScaleSetNetworkProfileArgs{
* Name: pulumi.String("mynetworkprofile"),
* Primary: pulumi.Bool(true),
* IpConfigurations: compute.ScaleSetNetworkProfileIpConfigurationArray{
* &compute.ScaleSetNetworkProfileIpConfigurationArgs{
* Name: pulumi.String("TestIPConfiguration"),
* Primary: pulumi.Bool(true),
* SubnetId: exampleSubnet.ID(),
* LoadBalancerBackendAddressPoolIds: pulumi.StringArray{
* bpepool.ID(),
* },
* LoadBalancerInboundNatRulesIds: pulumi.StringArray{
* lbnatpool.ID(),
* },
* },
* },
* },
* },
* Tags: pulumi.StringMap{
* "environment": pulumi.String("staging"),
* },
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.azure.core.ResourceGroup;
* import com.pulumi.azure.core.ResourceGroupArgs;
* import com.pulumi.azure.network.VirtualNetwork;
* import com.pulumi.azure.network.VirtualNetworkArgs;
* import com.pulumi.azure.network.Subnet;
* import com.pulumi.azure.network.SubnetArgs;
* import com.pulumi.azure.network.PublicIp;
* import com.pulumi.azure.network.PublicIpArgs;
* import com.pulumi.azure.lb.LoadBalancer;
* import com.pulumi.azure.lb.LoadBalancerArgs;
* import com.pulumi.azure.lb.inputs.LoadBalancerFrontendIpConfigurationArgs;
* import com.pulumi.azure.lb.BackendAddressPool;
* import com.pulumi.azure.lb.BackendAddressPoolArgs;
* import com.pulumi.azure.lb.NatPool;
* import com.pulumi.azure.lb.NatPoolArgs;
* import com.pulumi.azure.lb.Probe;
* import com.pulumi.azure.lb.ProbeArgs;
* import com.pulumi.azure.compute.ScaleSet;
* import com.pulumi.azure.compute.ScaleSetArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetRollingUpgradePolicyArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetSkuArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetStorageProfileImageReferenceArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetStorageProfileOsDiskArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetStorageProfileDataDiskArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetOsProfileArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetOsProfileLinuxConfigArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetNetworkProfileArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* var example = new ResourceGroup("example", ResourceGroupArgs.builder()
* .name("example-resources")
* .location("West Europe")
* .build());
* var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
* .name("acctvn")
* .addressSpaces("10.0.0.0/16")
* .location(example.location())
* .resourceGroupName(example.name())
* .build());
* var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
* .name("acctsub")
* .resourceGroupName(example.name())
* .virtualNetworkName(exampleVirtualNetwork.name())
* .addressPrefixes("10.0.2.0/24")
* .build());
* var examplePublicIp = new PublicIp("examplePublicIp", PublicIpArgs.builder()
* .name("test")
* .location(example.location())
* .resourceGroupName(example.name())
* .allocationMethod("Static")
* .domainNameLabel(example.name())
* .tags(Map.of("environment", "staging"))
* .build());
* var exampleLoadBalancer = new LoadBalancer("exampleLoadBalancer", LoadBalancerArgs.builder()
* .name("test")
* .location(example.location())
* .resourceGroupName(example.name())
* .frontendIpConfigurations(LoadBalancerFrontendIpConfigurationArgs.builder()
* .name("PublicIPAddress")
* .publicIpAddressId(examplePublicIp.id())
* .build())
* .build());
* var bpepool = new BackendAddressPool("bpepool", BackendAddressPoolArgs.builder()
* .loadbalancerId(exampleLoadBalancer.id())
* .name("BackEndAddressPool")
* .build());
* var lbnatpool = new NatPool("lbnatpool", NatPoolArgs.builder()
* .resourceGroupName(example.name())
* .name("ssh")
* .loadbalancerId(exampleLoadBalancer.id())
* .protocol("Tcp")
* .frontendPortStart(50000)
* .frontendPortEnd(50119)
* .backendPort(22)
* .frontendIpConfigurationName("PublicIPAddress")
* .build());
* var exampleProbe = new Probe("exampleProbe", ProbeArgs.builder()
* .loadbalancerId(exampleLoadBalancer.id())
* .name("http-probe")
* .protocol("Http")
* .requestPath("/health")
* .port(8080)
* .build());
* var exampleScaleSet = new ScaleSet("exampleScaleSet", ScaleSetArgs.builder()
* .name("mytestscaleset-1")
* .location(example.location())
* .resourceGroupName(example.name())
* .automaticOsUpgrade(true)
* .upgradePolicyMode("Rolling")
* .rollingUpgradePolicy(ScaleSetRollingUpgradePolicyArgs.builder()
* .maxBatchInstancePercent(20)
* .maxUnhealthyInstancePercent(20)
* .maxUnhealthyUpgradedInstancePercent(5)
* .pauseTimeBetweenBatches("PT0S")
* .build())
* .healthProbeId(exampleProbe.id())
* .sku(ScaleSetSkuArgs.builder()
* .name("Standard_F2")
* .tier("Standard")
* .capacity(2)
* .build())
* .storageProfileImageReference(ScaleSetStorageProfileImageReferenceArgs.builder()
* .publisher("Canonical")
* .offer("0001-com-ubuntu-server-jammy")
* .sku("22_04-lts")
* .version("latest")
* .build())
* .storageProfileOsDisk(ScaleSetStorageProfileOsDiskArgs.builder()
* .name("")
* .caching("ReadWrite")
* .createOption("FromImage")
* .managedDiskType("Standard_LRS")
* .build())
* .storageProfileDataDisks(ScaleSetStorageProfileDataDiskArgs.builder()
* .lun(0)
* .caching("ReadWrite")
* .createOption("Empty")
* .diskSizeGb(10)
* .build())
* .osProfile(ScaleSetOsProfileArgs.builder()
* .computerNamePrefix("testvm")
* .adminUsername("myadmin")
* .build())
* .osProfileLinuxConfig(ScaleSetOsProfileLinuxConfigArgs.builder()
* .disablePasswordAuthentication(true)
* .sshKeys(ScaleSetOsProfileLinuxConfigSshKeyArgs.builder()
* .path("/home/myadmin/.ssh/authorized_keys")
* .keyData(StdFunctions.file(FileArgs.builder()
* .input("~/.ssh/demo_key.pub")
* .build()).result())
* .build())
* .build())
* .networkProfiles(ScaleSetNetworkProfileArgs.builder()
* .name("mynetworkprofile")
* .primary(true)
* .ipConfigurations(ScaleSetNetworkProfileIpConfigurationArgs.builder()
* .name("TestIPConfiguration")
* .primary(true)
* .subnetId(exampleSubnet.id())
* .loadBalancerBackendAddressPoolIds(bpepool.id())
* .loadBalancerInboundNatRulesIds(lbnatpool.id())
* .build())
* .build())
* .tags(Map.of("environment", "staging"))
* .build());
* }
* }
* ```
* ```yaml
* resources:
* example:
* type: azure:core:ResourceGroup
* properties:
* name: example-resources
* location: West Europe
* exampleVirtualNetwork:
* type: azure:network:VirtualNetwork
* name: example
* properties:
* name: acctvn
* addressSpaces:
* - 10.0.0.0/16
* location: ${example.location}
* resourceGroupName: ${example.name}
* exampleSubnet:
* type: azure:network:Subnet
* name: example
* properties:
* name: acctsub
* resourceGroupName: ${example.name}
* virtualNetworkName: ${exampleVirtualNetwork.name}
* addressPrefixes:
* - 10.0.2.0/24
* examplePublicIp:
* type: azure:network:PublicIp
* name: example
* properties:
* name: test
* location: ${example.location}
* resourceGroupName: ${example.name}
* allocationMethod: Static
* domainNameLabel: ${example.name}
* tags:
* environment: staging
* exampleLoadBalancer:
* type: azure:lb:LoadBalancer
* name: example
* properties:
* name: test
* location: ${example.location}
* resourceGroupName: ${example.name}
* frontendIpConfigurations:
* - name: PublicIPAddress
* publicIpAddressId: ${examplePublicIp.id}
* bpepool:
* type: azure:lb:BackendAddressPool
* properties:
* loadbalancerId: ${exampleLoadBalancer.id}
* name: BackEndAddressPool
* lbnatpool:
* type: azure:lb:NatPool
* properties:
* resourceGroupName: ${example.name}
* name: ssh
* loadbalancerId: ${exampleLoadBalancer.id}
* protocol: Tcp
* frontendPortStart: 50000
* frontendPortEnd: 50119
* backendPort: 22
* frontendIpConfigurationName: PublicIPAddress
* exampleProbe:
* type: azure:lb:Probe
* name: example
* properties:
* loadbalancerId: ${exampleLoadBalancer.id}
* name: http-probe
* protocol: Http
* requestPath: /health
* port: 8080
* exampleScaleSet:
* type: azure:compute:ScaleSet
* name: example
* properties:
* name: mytestscaleset-1
* location: ${example.location}
* resourceGroupName: ${example.name}
* automaticOsUpgrade: true
* upgradePolicyMode: Rolling
* rollingUpgradePolicy:
* maxBatchInstancePercent: 20
* maxUnhealthyInstancePercent: 20
* maxUnhealthyUpgradedInstancePercent: 5
* pauseTimeBetweenBatches: PT0S
* healthProbeId: ${exampleProbe.id}
* sku:
* name: Standard_F2
* tier: Standard
* capacity: 2
* storageProfileImageReference:
* publisher: Canonical
* offer: 0001-com-ubuntu-server-jammy
* sku: 22_04-lts
* version: latest
* storageProfileOsDisk:
* name:
* caching: ReadWrite
* createOption: FromImage
* managedDiskType: Standard_LRS
* storageProfileDataDisks:
* - lun: 0
* caching: ReadWrite
* createOption: Empty
* diskSizeGb: 10
* osProfile:
* computerNamePrefix: testvm
* adminUsername: myadmin
* osProfileLinuxConfig:
* disablePasswordAuthentication: true
* sshKeys:
* - path: /home/myadmin/.ssh/authorized_keys
* keyData:
* fn::invoke:
* Function: std:file
* Arguments:
* input: ~/.ssh/demo_key.pub
* Return: result
* networkProfiles:
* - name: mynetworkprofile
* primary: true
* ipConfigurations:
* - name: TestIPConfiguration
* primary: true
* subnetId: ${exampleSubnet.id}
* loadBalancerBackendAddressPoolIds:
* - ${bpepool.id}
* loadBalancerInboundNatRulesIds:
* - ${lbnatpool.id}
* tags:
* environment: staging
* ```
*
* ### With Unmanaged Disks
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as azure from "@pulumi/azure";
* import * as std from "@pulumi/std";
* const example = new azure.core.ResourceGroup("example", {
* name: "example-resources",
* location: "West Europe",
* });
* const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
* name: "acctvn",
* addressSpaces: ["10.0.0.0/16"],
* location: example.location,
* resourceGroupName: example.name,
* });
* const exampleSubnet = new azure.network.Subnet("example", {
* name: "acctsub",
* resourceGroupName: example.name,
* virtualNetworkName: exampleVirtualNetwork.name,
* addressPrefixes: ["10.0.2.0/24"],
* });
* const exampleAccount = new azure.storage.Account("example", {
* name: "accsa",
* resourceGroupName: example.name,
* location: example.location,
* accountTier: "Standard",
* accountReplicationType: "LRS",
* tags: {
* environment: "staging",
* },
* });
* const exampleContainer = new azure.storage.Container("example", {
* name: "vhds",
* storageAccountName: exampleAccount.name,
* containerAccessType: "private",
* });
* const exampleScaleSet = new azure.compute.ScaleSet("example", {
* name: "mytestscaleset-1",
* location: example.location,
* resourceGroupName: example.name,
* upgradePolicyMode: "Manual",
* sku: {
* name: "Standard_F2",
* tier: "Standard",
* capacity: 2,
* },
* osProfile: {
* computerNamePrefix: "testvm",
* adminUsername: "myadmin",
* },
* osProfileLinuxConfig: {
* disablePasswordAuthentication: true,
* sshKeys: [{
* path: "/home/myadmin/.ssh/authorized_keys",
* keyData: std.file({
* input: "~/.ssh/demo_key.pub",
* }).then(invoke => invoke.result),
* }],
* },
* networkProfiles: [{
* name: "TestNetworkProfile",
* primary: true,
* ipConfigurations: [{
* name: "TestIPConfiguration",
* primary: true,
* subnetId: exampleSubnet.id,
* }],
* }],
* storageProfileOsDisk: {
* name: "osDiskProfile",
* caching: "ReadWrite",
* createOption: "FromImage",
* vhdContainers: [pulumi.interpolate`${exampleAccount.primaryBlobEndpoint}${exampleContainer.name}`],
* },
* storageProfileImageReference: {
* publisher: "Canonical",
* offer: "0001-com-ubuntu-server-jammy",
* sku: "22_04-lts",
* version: "latest",
* },
* });
* ```
* ```python
* import pulumi
* import pulumi_azure as azure
* import pulumi_std as std
* example = azure.core.ResourceGroup("example",
* name="example-resources",
* location="West Europe")
* example_virtual_network = azure.network.VirtualNetwork("example",
* name="acctvn",
* address_spaces=["10.0.0.0/16"],
* location=example.location,
* resource_group_name=example.name)
* example_subnet = azure.network.Subnet("example",
* name="acctsub",
* resource_group_name=example.name,
* virtual_network_name=example_virtual_network.name,
* address_prefixes=["10.0.2.0/24"])
* example_account = azure.storage.Account("example",
* name="accsa",
* resource_group_name=example.name,
* location=example.location,
* account_tier="Standard",
* account_replication_type="LRS",
* tags={
* "environment": "staging",
* })
* example_container = azure.storage.Container("example",
* name="vhds",
* storage_account_name=example_account.name,
* container_access_type="private")
* example_scale_set = azure.compute.ScaleSet("example",
* name="mytestscaleset-1",
* location=example.location,
* resource_group_name=example.name,
* upgrade_policy_mode="Manual",
* sku={
* "name": "Standard_F2",
* "tier": "Standard",
* "capacity": 2,
* },
* os_profile={
* "computer_name_prefix": "testvm",
* "admin_username": "myadmin",
* },
* os_profile_linux_config={
* "disable_password_authentication": True,
* "ssh_keys": [{
* "path": "/home/myadmin/.ssh/authorized_keys",
* "key_data": std.file(input="~/.ssh/demo_key.pub").result,
* }],
* },
* network_profiles=[{
* "name": "TestNetworkProfile",
* "primary": True,
* "ip_configurations": [{
* "name": "TestIPConfiguration",
* "primary": True,
* "subnet_id": example_subnet.id,
* }],
* }],
* storage_profile_os_disk={
* "name": "osDiskProfile",
* "caching": "ReadWrite",
* "create_option": "FromImage",
* "vhd_containers": [pulumi.Output.all(example_account.primary_blob_endpoint, example_container.name).apply(lambda primary_blob_endpoint, name: f"{primary_blob_endpoint}{name}")],
* },
* storage_profile_image_reference={
* "publisher": "Canonical",
* "offer": "0001-com-ubuntu-server-jammy",
* "sku": "22_04-lts",
* "version": "latest",
* })
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using Azure = Pulumi.Azure;
* using Std = Pulumi.Std;
* return await Deployment.RunAsync(() =>
* {
* var example = new Azure.Core.ResourceGroup("example", new()
* {
* Name = "example-resources",
* Location = "West Europe",
* });
* var exampleVirtualNetwork = new Azure.Network.VirtualNetwork("example", new()
* {
* Name = "acctvn",
* AddressSpaces = new[]
* {
* "10.0.0.0/16",
* },
* Location = example.Location,
* ResourceGroupName = example.Name,
* });
* var exampleSubnet = new Azure.Network.Subnet("example", new()
* {
* Name = "acctsub",
* ResourceGroupName = example.Name,
* VirtualNetworkName = exampleVirtualNetwork.Name,
* AddressPrefixes = new[]
* {
* "10.0.2.0/24",
* },
* });
* var exampleAccount = new Azure.Storage.Account("example", new()
* {
* Name = "accsa",
* ResourceGroupName = example.Name,
* Location = example.Location,
* AccountTier = "Standard",
* AccountReplicationType = "LRS",
* Tags =
* {
* { "environment", "staging" },
* },
* });
* var exampleContainer = new Azure.Storage.Container("example", new()
* {
* Name = "vhds",
* StorageAccountName = exampleAccount.Name,
* ContainerAccessType = "private",
* });
* var exampleScaleSet = new Azure.Compute.ScaleSet("example", new()
* {
* Name = "mytestscaleset-1",
* Location = example.Location,
* ResourceGroupName = example.Name,
* UpgradePolicyMode = "Manual",
* Sku = new Azure.Compute.Inputs.ScaleSetSkuArgs
* {
* Name = "Standard_F2",
* Tier = "Standard",
* Capacity = 2,
* },
* OsProfile = new Azure.Compute.Inputs.ScaleSetOsProfileArgs
* {
* ComputerNamePrefix = "testvm",
* AdminUsername = "myadmin",
* },
* OsProfileLinuxConfig = new Azure.Compute.Inputs.ScaleSetOsProfileLinuxConfigArgs
* {
* DisablePasswordAuthentication = true,
* SshKeys = new[]
* {
* new Azure.Compute.Inputs.ScaleSetOsProfileLinuxConfigSshKeyArgs
* {
* Path = "/home/myadmin/.ssh/authorized_keys",
* KeyData = Std.File.Invoke(new()
* {
* Input = "~/.ssh/demo_key.pub",
* }).Apply(invoke => invoke.Result),
* },
* },
* },
* NetworkProfiles = new[]
* {
* new Azure.Compute.Inputs.ScaleSetNetworkProfileArgs
* {
* Name = "TestNetworkProfile",
* Primary = true,
* IpConfigurations = new[]
* {
* new Azure.Compute.Inputs.ScaleSetNetworkProfileIpConfigurationArgs
* {
* Name = "TestIPConfiguration",
* Primary = true,
* SubnetId = exampleSubnet.Id,
* },
* },
* },
* },
* StorageProfileOsDisk = new Azure.Compute.Inputs.ScaleSetStorageProfileOsDiskArgs
* {
* Name = "osDiskProfile",
* Caching = "ReadWrite",
* CreateOption = "FromImage",
* VhdContainers = new[]
* {
* Output.Tuple(exampleAccount.PrimaryBlobEndpoint, exampleContainer.Name).Apply(values =>
* {
* var primaryBlobEndpoint = values.Item1;
* var name = values.Item2;
* return $"{primaryBlobEndpoint}{name}";
* }),
* },
* },
* StorageProfileImageReference = new Azure.Compute.Inputs.ScaleSetStorageProfileImageReferenceArgs
* {
* Publisher = "Canonical",
* Offer = "0001-com-ubuntu-server-jammy",
* Sku = "22_04-lts",
* Version = "latest",
* },
* });
* });
* ```
* ```go
* package main
* import (
* "fmt"
* "github.com/pulumi/pulumi-azure/sdk/v5/go/azure/compute"
* "github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
* "github.com/pulumi/pulumi-azure/sdk/v5/go/azure/network"
* "github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
* "github.com/pulumi/pulumi-std/sdk/go/std"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
* Name: pulumi.String("example-resources"),
* Location: pulumi.String("West Europe"),
* })
* if err != nil {
* return err
* }
* exampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, "example", &network.VirtualNetworkArgs{
* Name: pulumi.String("acctvn"),
* AddressSpaces: pulumi.StringArray{
* pulumi.String("10.0.0.0/16"),
* },
* Location: example.Location,
* ResourceGroupName: example.Name,
* })
* if err != nil {
* return err
* }
* exampleSubnet, err := network.NewSubnet(ctx, "example", &network.SubnetArgs{
* Name: pulumi.String("acctsub"),
* ResourceGroupName: example.Name,
* VirtualNetworkName: exampleVirtualNetwork.Name,
* AddressPrefixes: pulumi.StringArray{
* pulumi.String("10.0.2.0/24"),
* },
* })
* if err != nil {
* return err
* }
* exampleAccount, err := storage.NewAccount(ctx, "example", &storage.AccountArgs{
* Name: pulumi.String("accsa"),
* ResourceGroupName: example.Name,
* Location: example.Location,
* AccountTier: pulumi.String("Standard"),
* AccountReplicationType: pulumi.String("LRS"),
* Tags: pulumi.StringMap{
* "environment": pulumi.String("staging"),
* },
* })
* if err != nil {
* return err
* }
* exampleContainer, err := storage.NewContainer(ctx, "example", &storage.ContainerArgs{
* Name: pulumi.String("vhds"),
* StorageAccountName: exampleAccount.Name,
* ContainerAccessType: pulumi.String("private"),
* })
* if err != nil {
* return err
* }
* invokeFile, err := std.File(ctx, &std.FileArgs{
* Input: "~/.ssh/demo_key.pub",
* }, nil)
* if err != nil {
* return err
* }
* _, err = compute.NewScaleSet(ctx, "example", &compute.ScaleSetArgs{
* Name: pulumi.String("mytestscaleset-1"),
* Location: example.Location,
* ResourceGroupName: example.Name,
* UpgradePolicyMode: pulumi.String("Manual"),
* Sku: &compute.ScaleSetSkuArgs{
* Name: pulumi.String("Standard_F2"),
* Tier: pulumi.String("Standard"),
* Capacity: pulumi.Int(2),
* },
* OsProfile: &compute.ScaleSetOsProfileArgs{
* ComputerNamePrefix: pulumi.String("testvm"),
* AdminUsername: pulumi.String("myadmin"),
* },
* OsProfileLinuxConfig: &compute.ScaleSetOsProfileLinuxConfigArgs{
* DisablePasswordAuthentication: pulumi.Bool(true),
* SshKeys: compute.ScaleSetOsProfileLinuxConfigSshKeyArray{
* &compute.ScaleSetOsProfileLinuxConfigSshKeyArgs{
* Path: pulumi.String("/home/myadmin/.ssh/authorized_keys"),
* KeyData: pulumi.String(invokeFile.Result),
* },
* },
* },
* NetworkProfiles: compute.ScaleSetNetworkProfileArray{
* &compute.ScaleSetNetworkProfileArgs{
* Name: pulumi.String("TestNetworkProfile"),
* Primary: pulumi.Bool(true),
* IpConfigurations: compute.ScaleSetNetworkProfileIpConfigurationArray{
* &compute.ScaleSetNetworkProfileIpConfigurationArgs{
* Name: pulumi.String("TestIPConfiguration"),
* Primary: pulumi.Bool(true),
* SubnetId: exampleSubnet.ID(),
* },
* },
* },
* },
* StorageProfileOsDisk: &compute.ScaleSetStorageProfileOsDiskArgs{
* Name: pulumi.String("osDiskProfile"),
* Caching: pulumi.String("ReadWrite"),
* CreateOption: pulumi.String("FromImage"),
* VhdContainers: pulumi.StringArray{
* pulumi.All(exampleAccount.PrimaryBlobEndpoint, exampleContainer.Name).ApplyT(func(_args []interface{}) (string, error) {
* primaryBlobEndpoint := _args[0].(string)
* name := _args[1].(string)
* return fmt.Sprintf("%v%v", primaryBlobEndpoint, name), nil
* }).(pulumi.StringOutput),
* },
* },
* StorageProfileImageReference: &compute.ScaleSetStorageProfileImageReferenceArgs{
* Publisher: pulumi.String("Canonical"),
* Offer: pulumi.String("0001-com-ubuntu-server-jammy"),
* Sku: pulumi.String("22_04-lts"),
* Version: pulumi.String("latest"),
* },
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.azure.core.ResourceGroup;
* import com.pulumi.azure.core.ResourceGroupArgs;
* import com.pulumi.azure.network.VirtualNetwork;
* import com.pulumi.azure.network.VirtualNetworkArgs;
* import com.pulumi.azure.network.Subnet;
* import com.pulumi.azure.network.SubnetArgs;
* import com.pulumi.azure.storage.Account;
* import com.pulumi.azure.storage.AccountArgs;
* import com.pulumi.azure.storage.Container;
* import com.pulumi.azure.storage.ContainerArgs;
* import com.pulumi.azure.compute.ScaleSet;
* import com.pulumi.azure.compute.ScaleSetArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetSkuArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetOsProfileArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetOsProfileLinuxConfigArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetNetworkProfileArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetStorageProfileOsDiskArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetStorageProfileImageReferenceArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* var example = new ResourceGroup("example", ResourceGroupArgs.builder()
* .name("example-resources")
* .location("West Europe")
* .build());
* var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
* .name("acctvn")
* .addressSpaces("10.0.0.0/16")
* .location(example.location())
* .resourceGroupName(example.name())
* .build());
* var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
* .name("acctsub")
* .resourceGroupName(example.name())
* .virtualNetworkName(exampleVirtualNetwork.name())
* .addressPrefixes("10.0.2.0/24")
* .build());
* var exampleAccount = new Account("exampleAccount", AccountArgs.builder()
* .name("accsa")
* .resourceGroupName(example.name())
* .location(example.location())
* .accountTier("Standard")
* .accountReplicationType("LRS")
* .tags(Map.of("environment", "staging"))
* .build());
* var exampleContainer = new Container("exampleContainer", ContainerArgs.builder()
* .name("vhds")
* .storageAccountName(exampleAccount.name())
* .containerAccessType("private")
* .build());
* var exampleScaleSet = new ScaleSet("exampleScaleSet", ScaleSetArgs.builder()
* .name("mytestscaleset-1")
* .location(example.location())
* .resourceGroupName(example.name())
* .upgradePolicyMode("Manual")
* .sku(ScaleSetSkuArgs.builder()
* .name("Standard_F2")
* .tier("Standard")
* .capacity(2)
* .build())
* .osProfile(ScaleSetOsProfileArgs.builder()
* .computerNamePrefix("testvm")
* .adminUsername("myadmin")
* .build())
* .osProfileLinuxConfig(ScaleSetOsProfileLinuxConfigArgs.builder()
* .disablePasswordAuthentication(true)
* .sshKeys(ScaleSetOsProfileLinuxConfigSshKeyArgs.builder()
* .path("/home/myadmin/.ssh/authorized_keys")
* .keyData(StdFunctions.file(FileArgs.builder()
* .input("~/.ssh/demo_key.pub")
* .build()).result())
* .build())
* .build())
* .networkProfiles(ScaleSetNetworkProfileArgs.builder()
* .name("TestNetworkProfile")
* .primary(true)
* .ipConfigurations(ScaleSetNetworkProfileIpConfigurationArgs.builder()
* .name("TestIPConfiguration")
* .primary(true)
* .subnetId(exampleSubnet.id())
* .build())
* .build())
* .storageProfileOsDisk(ScaleSetStorageProfileOsDiskArgs.builder()
* .name("osDiskProfile")
* .caching("ReadWrite")
* .createOption("FromImage")
* .vhdContainers(Output.tuple(exampleAccount.primaryBlobEndpoint(), exampleContainer.name()).applyValue(values -> {
* var primaryBlobEndpoint = values.t1;
* var name = values.t2;
* return String.format("%s%s", primaryBlobEndpoint,name);
* }))
* .build())
* .storageProfileImageReference(ScaleSetStorageProfileImageReferenceArgs.builder()
* .publisher("Canonical")
* .offer("0001-com-ubuntu-server-jammy")
* .sku("22_04-lts")
* .version("latest")
* .build())
* .build());
* }
* }
* ```
* ```yaml
* resources:
* example:
* type: azure:core:ResourceGroup
* properties:
* name: example-resources
* location: West Europe
* exampleVirtualNetwork:
* type: azure:network:VirtualNetwork
* name: example
* properties:
* name: acctvn
* addressSpaces:
* - 10.0.0.0/16
* location: ${example.location}
* resourceGroupName: ${example.name}
* exampleSubnet:
* type: azure:network:Subnet
* name: example
* properties:
* name: acctsub
* resourceGroupName: ${example.name}
* virtualNetworkName: ${exampleVirtualNetwork.name}
* addressPrefixes:
* - 10.0.2.0/24
* exampleAccount:
* type: azure:storage:Account
* name: example
* properties:
* name: accsa
* resourceGroupName: ${example.name}
* location: ${example.location}
* accountTier: Standard
* accountReplicationType: LRS
* tags:
* environment: staging
* exampleContainer:
* type: azure:storage:Container
* name: example
* properties:
* name: vhds
* storageAccountName: ${exampleAccount.name}
* containerAccessType: private
* exampleScaleSet:
* type: azure:compute:ScaleSet
* name: example
* properties:
* name: mytestscaleset-1
* location: ${example.location}
* resourceGroupName: ${example.name}
* upgradePolicyMode: Manual
* sku:
* name: Standard_F2
* tier: Standard
* capacity: 2
* osProfile:
* computerNamePrefix: testvm
* adminUsername: myadmin
* osProfileLinuxConfig:
* disablePasswordAuthentication: true
* sshKeys:
* - path: /home/myadmin/.ssh/authorized_keys
* keyData:
* fn::invoke:
* Function: std:file
* Arguments:
* input: ~/.ssh/demo_key.pub
* Return: result
* networkProfiles:
* - name: TestNetworkProfile
* primary: true
* ipConfigurations:
* - name: TestIPConfiguration
* primary: true
* subnetId: ${exampleSubnet.id}
* storageProfileOsDisk:
* name: osDiskProfile
* caching: ReadWrite
* createOption: FromImage
* vhdContainers:
* - ${exampleAccount.primaryBlobEndpoint}${exampleContainer.name}
* storageProfileImageReference:
* publisher: Canonical
* offer: 0001-com-ubuntu-server-jammy
* sku: 22_04-lts
* version: latest
* ```
*
* ## Example of storage_profile_image_reference with id
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as azure from "@pulumi/azure";
* const example = new azure.compute.Image("example", {name: "test"});
* const exampleScaleSet = new azure.compute.ScaleSet("example", {
* name: "test",
* storageProfileImageReference: {
* id: example.id,
* },
* });
* ```
* ```python
* import pulumi
* import pulumi_azure as azure
* example = azure.compute.Image("example", name="test")
* example_scale_set = azure.compute.ScaleSet("example",
* name="test",
* storage_profile_image_reference={
* "id": example.id,
* })
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using Azure = Pulumi.Azure;
* return await Deployment.RunAsync(() =>
* {
* var example = new Azure.Compute.Image("example", new()
* {
* Name = "test",
* });
* var exampleScaleSet = new Azure.Compute.ScaleSet("example", new()
* {
* Name = "test",
* StorageProfileImageReference = new Azure.Compute.Inputs.ScaleSetStorageProfileImageReferenceArgs
* {
* Id = example.Id,
* },
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-azure/sdk/v5/go/azure/compute"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* example, err := compute.NewImage(ctx, "example", &compute.ImageArgs{
* Name: pulumi.String("test"),
* })
* if err != nil {
* return err
* }
* _, err = compute.NewScaleSet(ctx, "example", &compute.ScaleSetArgs{
* Name: pulumi.String("test"),
* StorageProfileImageReference: &compute.ScaleSetStorageProfileImageReferenceArgs{
* Id: example.ID(),
* },
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.azure.compute.Image;
* import com.pulumi.azure.compute.ImageArgs;
* import com.pulumi.azure.compute.ScaleSet;
* import com.pulumi.azure.compute.ScaleSetArgs;
* import com.pulumi.azure.compute.inputs.ScaleSetStorageProfileImageReferenceArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* var example = new Image("example", ImageArgs.builder()
* .name("test")
* .build());
* var exampleScaleSet = new ScaleSet("exampleScaleSet", ScaleSetArgs.builder()
* .name("test")
* .storageProfileImageReference(ScaleSetStorageProfileImageReferenceArgs.builder()
* .id(example.id())
* .build())
* .build());
* }
* }
* ```
* ```yaml
* resources:
* example:
* type: azure:compute:Image
* properties:
* name: test
* exampleScaleSet:
* type: azure:compute:ScaleSet
* name: example
* properties:
* name: test
* storageProfileImageReference:
* id: ${example.id}
* ```
*
* ## Import
* Virtual Machine Scale Sets can be imported using the `resource id`, e.g.
* ```sh
* $ pulumi import azure:compute/scaleSet:ScaleSet scaleset1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Compute/virtualMachineScaleSets/scaleset1
* ```
*/
public class ScaleSet internal constructor(
override val javaResource: com.pulumi.azure.compute.ScaleSet,
) : KotlinCustomResource(javaResource, ScaleSetMapper) {
/**
* Automatic OS patches can be applied by Azure to your scaleset. This is particularly useful when `upgrade_policy_mode` is set to `Rolling`. Defaults to `false`.
*/
public val automaticOsUpgrade: Output?
get() = javaResource.automaticOsUpgrade().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* A `boot_diagnostics` block as referenced below.
*/
public val bootDiagnostics: Output?
get() = javaResource.bootDiagnostics().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> scaleSetBootDiagnosticsToKotlin(args0) })
}).orElse(null)
})
/**
* Specifies the eviction policy for Virtual Machines in this Scale Set. Possible values are `Deallocate` and `Delete`. Changing this forces a new resource to be created.
* > **NOTE:** `eviction_policy` can only be set when `priority` is set to `Low`.
*/
public val evictionPolicy: Output?
get() = javaResource.evictionPolicy().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Can be specified multiple times to add extension profiles to the scale set. Each `extension` block supports the fields documented below.
*/
public val extensions: Output>?
get() = javaResource.extensions().applyValue({ args0 ->
args0.map({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> scaleSetExtensionToKotlin(args0) })
})
}).orElse(null)
})
/**
* Specifies the identifier for the load balancer health probe. Required when using `Rolling` as your `upgrade_policy_mode`.
*/
public val healthProbeId: Output?
get() = javaResource.healthProbeId().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* An `identity` block as defined below.
*/
public val identity: Output?
get() = javaResource.identity().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
scaleSetIdentityToKotlin(args0)
})
}).orElse(null)
})
/**
* (Optional, when a Windows machine) Specifies the Windows OS license type. If supplied, the only allowed values are `Windows_Client` and `Windows_Server`.
*/
public val licenseType: Output
get() = javaResource.licenseType().applyValue({ args0 -> args0 })
/**
* Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
*/
public val location: Output
get() = javaResource.location().applyValue({ args0 -> args0 })
/**
* Specifies the name of the virtual machine scale set resource. Changing this forces a new resource to be created.
*/
public val name: Output
get() = javaResource.name().applyValue({ args0 -> args0 })
/**
* A collection of `network_profile` blocks as documented below.
*/
public val networkProfiles: Output>
get() = javaResource.networkProfiles().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> scaleSetNetworkProfileToKotlin(args0) })
})
})
/**
* A `os_profile` block as documented below.
*/
public val osProfile: Output
get() = javaResource.osProfile().applyValue({ args0 ->
args0.let({ args0 ->
scaleSetOsProfileToKotlin(args0)
})
})
/**
* A `os_profile_linux_config` block as documented below.
*/
public val osProfileLinuxConfig: Output
get() = javaResource.osProfileLinuxConfig().applyValue({ args0 ->
args0.let({ args0 ->
scaleSetOsProfileLinuxConfigToKotlin(args0)
})
})
/**
* A collection of `os_profile_secrets` blocks as documented below.
*/
public val osProfileSecrets: Output>?
get() = javaResource.osProfileSecrets().applyValue({ args0 ->
args0.map({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
scaleSetOsProfileSecretToKotlin(args0)
})
})
}).orElse(null)
})
/**
* A `os_profile_windows_config` block as documented below.
*/
public val osProfileWindowsConfig: Output?
get() = javaResource.osProfileWindowsConfig().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> scaleSetOsProfileWindowsConfigToKotlin(args0) })
}).orElse(null)
})
/**
* Specifies whether the virtual machine scale set should be overprovisioned. Defaults to `true`.
*/
public val overprovision: Output?
get() = javaResource.overprovision().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* A `plan` block as documented below.
*/
public val plan: Output?
get() = javaResource.plan().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
scaleSetPlanToKotlin(args0)
})
}).orElse(null)
})
/**
* Specifies the priority for the Virtual Machines in the Scale Set. Possible values are `Low` and `Regular`. Changing this forces a new resource to be created.
*/
public val priority: Output?
get() = javaResource.priority().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })
/**
* The ID of the Proximity Placement Group to which this Virtual Machine should be assigned. Changing this forces a new resource to be created
*/
public val proximityPlacementGroupId: Output?
get() = javaResource.proximityPlacementGroupId().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* The name of the resource group in which to create the virtual machine scale set. Changing this forces a new resource to be created.
*/
public val resourceGroupName: Output
get() = javaResource.resourceGroupName().applyValue({ args0 -> args0 })
/**
* A `rolling_upgrade_policy` block as defined below. This is only applicable when the `upgrade_policy_mode` is `Rolling`.
*/
public val rollingUpgradePolicy: Output?
get() = javaResource.rollingUpgradePolicy().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> scaleSetRollingUpgradePolicyToKotlin(args0) })
}).orElse(null)
})
/**
* Specifies whether the scale set is limited to a single placement group with a maximum size of 100 virtual machines. If set to false, managed disks must be used. Changing this forces a new resource to be created. See [documentation](https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups) for more information. Defaults to `true`.
*/
public val singlePlacementGroup: Output?
get() = javaResource.singlePlacementGroup().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* A `sku` block as documented below.
*/
public val sku: Output
get() = javaResource.sku().applyValue({ args0 ->
args0.let({ args0 ->
scaleSetSkuToKotlin(args0)
})
})
/**
* A `storage_profile_data_disk` block as documented below.
*/
public val storageProfileDataDisks: Output>?
get() = javaResource.storageProfileDataDisks().applyValue({ args0 ->
args0.map({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
scaleSetStorageProfileDataDiskToKotlin(args0)
})
})
}).orElse(null)
})
/**
* A `storage_profile_image_reference` block as documented below.
*/
public val storageProfileImageReference: Output
get() = javaResource.storageProfileImageReference().applyValue({ args0 ->
args0.let({ args0 ->
scaleSetStorageProfileImageReferenceToKotlin(args0)
})
})
/**
* A `storage_profile_os_disk` block as documented below.
*/
public val storageProfileOsDisk: Output
get() = javaResource.storageProfileOsDisk().applyValue({ args0 ->
args0.let({ args0 ->
scaleSetStorageProfileOsDiskToKotlin(args0)
})
})
/**
* A mapping of tags to assign to the resource.
*/
public val tags: Output
© 2015 - 2025 Weber Informatics LLC | Privacy Policy