NodeTypeArgs

data class NodeTypeArgs(val additionalDataDisks: Output<List<VmssDataDiskArgs>>? = null, val additionalNetworkInterfaceConfigurations: Output<List<AdditionalNetworkInterfaceConfigurationArgs>>? = null, val applicationPorts: Output<EndpointRangeDescriptionArgs>? = null, val capacities: Output<Map<String, String>>? = null, val clusterName: Output<String>? = null, val computerNamePrefix: Output<String>? = null, val dataDiskLetter: Output<String>? = null, val dataDiskSizeGB: Output<Int>? = null, val dataDiskType: Output<Either<String, DiskType>>? = null, val dscpConfigurationId: Output<String>? = null, val enableAcceleratedNetworking: Output<Boolean>? = null, val enableEncryptionAtHost: Output<Boolean>? = null, val enableNodePublicIP: Output<Boolean>? = null, val enableNodePublicIPv6: Output<Boolean>? = null, val enableOverProvisioning: Output<Boolean>? = null, val ephemeralPorts: Output<EndpointRangeDescriptionArgs>? = null, val evictionPolicy: Output<Either<String, EvictionPolicyType>>? = null, val frontendConfigurations: Output<List<FrontendConfigurationArgs>>? = null, val hostGroupId: Output<String>? = null, val isPrimary: Output<Boolean>? = null, val isSpotVM: Output<Boolean>? = null, val isStateless: Output<Boolean>? = null, val multiplePlacementGroups: Output<Boolean>? = null, val natConfigurations: Output<List<NodeTypeNatConfigArgs>>? = null, val natGatewayId: Output<String>? = null, val networkSecurityRules: Output<List<NetworkSecurityRuleArgs>>? = null, val nodeTypeName: Output<String>? = null, val placementProperties: Output<Map<String, String>>? = null, val resourceGroupName: Output<String>? = null, val secureBootEnabled: Output<Boolean>? = null, val securityType: Output<Either<String, SecurityType>>? = null, val serviceArtifactReferenceId: Output<String>? = null, val sku: Output<NodeTypeSkuArgs>? = null, val spotRestoreTimeout: Output<String>? = null, val subnetId: Output<String>? = null, val tags: Output<Map<String, String>>? = null, val useDefaultPublicLoadBalancer: Output<Boolean>? = null, val useEphemeralOSDisk: Output<Boolean>? = null, val useTempDataDisk: Output<Boolean>? = null, val vmExtensions: Output<List<VMSSExtensionArgs>>? = null, val vmImageOffer: Output<String>? = null, val vmImagePlan: Output<VmImagePlanArgs>? = null, val vmImagePublisher: Output<String>? = null, val vmImageResourceId: Output<String>? = null, val vmImageSku: Output<String>? = null, val vmImageVersion: Output<String>? = null, val vmInstanceCount: Output<Int>? = null, val vmManagedIdentity: Output<VmManagedIdentityArgs>? = null, val vmSecrets: Output<List<VaultSecretGroupArgs>>? = null, val vmSetupActions: Output<List<Either<String, VmSetupAction>>>? = null, val vmSharedGalleryImageId: Output<String>? = null, val vmSize: Output<String>? = null, val zones: Output<List<String>>? = null) : ConvertibleToJava<NodeTypeArgs>

Describes a node type in the cluster, each node type represents sub set of nodes in the cluster. Uses Azure REST API version 2024-04-01. In version 2.x of the Azure Native provider, it used API version 2023-03-01-preview. Other available API versions: 2023-03-01-preview, 2023-07-01-preview, 2023-09-01-preview, 2023-11-01-preview, 2023-12-01-preview, 2024-02-01-preview, 2024-06-01-preview, 2024-09-01-preview, 2024-11-01-preview, 2025-03-01-preview. These can be accessed by generating a local SDK package using the CLI command pulumi package add azure-native servicefabric [ApiVersion]. See the ../../../version-guide/#accessing-any-api-version-via-local-packages for details.

Example Usage

Put a node type with auto-scale parameters

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var nodeType = new AzureNative.ServiceFabric.NodeType("nodeType", new()
{
Capacities =
{
{ "ClientConnections", "65536" },
},
ClusterName = "myCluster",
DataDiskSizeGB = 200,
DataDiskType = AzureNative.ServiceFabric.DiskType.Premium_LRS,
IsPrimary = false,
IsStateless = true,
MultiplePlacementGroups = true,
NodeTypeName = "BE",
PlacementProperties =
{
{ "HasSSD", "true" },
{ "NodeColor", "green" },
{ "SomeProperty", "5" },
},
ResourceGroupName = "resRg",
VmExtensions = new[]
{
new AzureNative.ServiceFabric.Inputs.VMSSExtensionArgs
{
AutoUpgradeMinorVersion = true,
Name = "Microsoft.Azure.Geneva.GenevaMonitoring",
Publisher = "Microsoft.Azure.Geneva",
Settings = null,
Type = "GenevaMonitoring",
TypeHandlerVersion = "2.0",
},
},
VmImageOffer = "WindowsServer",
VmImagePublisher = "MicrosoftWindowsServer",
VmImageSku = "2016-Datacenter-Server-Core",
VmImageVersion = "latest",
VmInstanceCount = -1,
VmManagedIdentity = new AzureNative.ServiceFabric.Inputs.VmManagedIdentityArgs
{
UserAssignedIdentities = new[]
{
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity",
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity2",
},
},
VmSecrets = new[]
{
new AzureNative.ServiceFabric.Inputs.VaultSecretGroupArgs
{
SourceVault = new AzureNative.ServiceFabric.Inputs.SubResourceArgs
{
Id = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.KeyVault/vaults/myVault",
},
VaultCertificates = new[]
{
new AzureNative.ServiceFabric.Inputs.VaultCertificateArgs
{
CertificateStore = "My",
CertificateUrl = "https://myVault.vault.azure.net:443/secrets/myCert/ef1a31d39e1f46bca33def54b6cda54c",
},
},
},
},
VmSize = "Standard_DS3",
});
});
package main
import (
servicefabric "github.com/pulumi/pulumi-azure-native-sdk/servicefabric/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := servicefabric.NewNodeType(ctx, "nodeType", &servicefabric.NodeTypeArgs{
Capacities: pulumi.StringMap{
"ClientConnections": pulumi.String("65536"),
},
ClusterName: pulumi.String("myCluster"),
DataDiskSizeGB: pulumi.Int(200),
DataDiskType: pulumi.String(servicefabric.DiskType_Premium_LRS),
IsPrimary: pulumi.Bool(false),
IsStateless: pulumi.Bool(true),
MultiplePlacementGroups: pulumi.Bool(true),
NodeTypeName: pulumi.String("BE"),
PlacementProperties: pulumi.StringMap{
"HasSSD": pulumi.String("true"),
"NodeColor": pulumi.String("green"),
"SomeProperty": pulumi.String("5"),
},
ResourceGroupName: pulumi.String("resRg"),
VmExtensions: servicefabric.VMSSExtensionArray{
&servicefabric.VMSSExtensionArgs{
AutoUpgradeMinorVersion: pulumi.Bool(true),
Name: pulumi.String("Microsoft.Azure.Geneva.GenevaMonitoring"),
Publisher: pulumi.String("Microsoft.Azure.Geneva"),
Settings: pulumi.Any(map[string]interface{}{}),
Type: pulumi.String("GenevaMonitoring"),
TypeHandlerVersion: pulumi.String("2.0"),
},
},
VmImageOffer: pulumi.String("WindowsServer"),
VmImagePublisher: pulumi.String("MicrosoftWindowsServer"),
VmImageSku: pulumi.String("2016-Datacenter-Server-Core"),
VmImageVersion: pulumi.String("latest"),
VmInstanceCount: pulumi.Int(-1),
VmManagedIdentity: &servicefabric.VmManagedIdentityArgs{
UserAssignedIdentities: pulumi.StringArray{
pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity"),
pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity2"),
},
},
VmSecrets: servicefabric.VaultSecretGroupArray{
&servicefabric.VaultSecretGroupArgs{
SourceVault: &servicefabric.SubResourceArgs{
Id: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.KeyVault/vaults/myVault"),
},
VaultCertificates: servicefabric.VaultCertificateArray{
&servicefabric.VaultCertificateArgs{
CertificateStore: pulumi.String("My"),
CertificateUrl: pulumi.String("https://myVault.vault.azure.net:443/secrets/myCert/ef1a31d39e1f46bca33def54b6cda54c"),
},
},
},
},
VmSize: pulumi.String("Standard_DS3"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.servicefabric.NodeType;
import com.pulumi.azurenative.servicefabric.NodeTypeArgs;
import com.pulumi.azurenative.servicefabric.inputs.VMSSExtensionArgs;
import com.pulumi.azurenative.servicefabric.inputs.VmManagedIdentityArgs;
import com.pulumi.azurenative.servicefabric.inputs.VaultSecretGroupArgs;
import com.pulumi.azurenative.servicefabric.inputs.SubResourceArgs;
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 nodeType = new NodeType("nodeType", NodeTypeArgs.builder()
.capacities(Map.of("ClientConnections", "65536"))
.clusterName("myCluster")
.dataDiskSizeGB(200)
.dataDiskType("Premium_LRS")
.isPrimary(false)
.isStateless(true)
.multiplePlacementGroups(true)
.nodeTypeName("BE")
.placementProperties(Map.ofEntries(
Map.entry("HasSSD", "true"),
Map.entry("NodeColor", "green"),
Map.entry("SomeProperty", "5")
))
.resourceGroupName("resRg")
.vmExtensions(VMSSExtensionArgs.builder()
.autoUpgradeMinorVersion(true)
.name("Microsoft.Azure.Geneva.GenevaMonitoring")
.publisher("Microsoft.Azure.Geneva")
.settings(Map.ofEntries(
))
.type("GenevaMonitoring")
.typeHandlerVersion("2.0")
.build())
.vmImageOffer("WindowsServer")
.vmImagePublisher("MicrosoftWindowsServer")
.vmImageSku("2016-Datacenter-Server-Core")
.vmImageVersion("latest")
.vmInstanceCount(-1)
.vmManagedIdentity(VmManagedIdentityArgs.builder()
.userAssignedIdentities(
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity",
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity2")
.build())
.vmSecrets(VaultSecretGroupArgs.builder()
.sourceVault(SubResourceArgs.builder()
.id("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.KeyVault/vaults/myVault")
.build())
.vaultCertificates(VaultCertificateArgs.builder()
.certificateStore("My")
.certificateUrl("https://myVault.vault.azure.net:443/secrets/myCert/ef1a31d39e1f46bca33def54b6cda54c")
.build())
.build())
.vmSize("Standard_DS3")
.build());
}
}

Put a node type with maximum parameters

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var nodeType = new AzureNative.ServiceFabric.NodeType("nodeType", new()
{
AdditionalDataDisks = new[]
{
new AzureNative.ServiceFabric.Inputs.VmssDataDiskArgs
{
DiskLetter = "F",
DiskSizeGB = 256,
DiskType = AzureNative.ServiceFabric.DiskType.StandardSSD_LRS,
Lun = 1,
},
new AzureNative.ServiceFabric.Inputs.VmssDataDiskArgs
{
DiskLetter = "G",
DiskSizeGB = 150,
DiskType = AzureNative.ServiceFabric.DiskType.Premium_LRS,
Lun = 2,
},
},
AdditionalNetworkInterfaceConfigurations = new[]
{
new AzureNative.ServiceFabric.Inputs.AdditionalNetworkInterfaceConfigurationArgs
{
DscpConfiguration = new AzureNative.ServiceFabric.Inputs.SubResourceArgs
{
Id = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/dscpConfigurations/myDscpConfig",
},
EnableAcceleratedNetworking = true,
IpConfigurations = new[]
{
new AzureNative.ServiceFabric.Inputs.IpConfigurationArgs
{
ApplicationGatewayBackendAddressPools = new[]
{
new AzureNative.ServiceFabric.Inputs.SubResourceArgs
{
Id = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/applicationGateways/appgw-test/backendAddressPools/appgwBepoolTest",
},
},
LoadBalancerBackendAddressPools = new[]
{
new AzureNative.ServiceFabric.Inputs.SubResourceArgs
{
Id = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/backendAddressPools/LoadBalancerBEAddressPool",
},
},
LoadBalancerInboundNatPools = new[]
{
new AzureNative.ServiceFabric.Inputs.SubResourceArgs
{
Id = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/inboundNatPools/LoadBalancerNATPool",
},
},
Name = "ipconfig-1",
PrivateIPAddressVersion = AzureNative.ServiceFabric.PrivateIPAddressVersion.IPv4,
PublicIPAddressConfiguration = new AzureNative.ServiceFabric.Inputs.IpConfigurationPublicIPAddressConfigurationArgs
{
IpTags = new[]
{
new AzureNative.ServiceFabric.Inputs.IpTagArgs
{
IpTagType = "RoutingPreference",
Tag = "Internet",
},
},
Name = "publicip-1",
PublicIPAddressVersion = AzureNative.ServiceFabric.PublicIPAddressVersion.IPv4,
},
Subnet = new AzureNative.ServiceFabric.Inputs.SubResourceArgs
{
Id = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1",
},
},
},
Name = "nic-1",
},
},
Capacities =
{
{ "ClientConnections", "65536" },
},
ClusterName = "myCluster",
ComputerNamePrefix = "BE",
DataDiskLetter = "S",
DataDiskSizeGB = 200,
DataDiskType = AzureNative.ServiceFabric.DiskType.Premium_LRS,
DscpConfigurationId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/dscpConfigurations/myDscpConfig",
EnableAcceleratedNetworking = true,
EnableEncryptionAtHost = true,
EnableNodePublicIP = true,
EnableNodePublicIPv6 = true,
EnableOverProvisioning = false,
EvictionPolicy = AzureNative.ServiceFabric.EvictionPolicyType.Deallocate,
FrontendConfigurations = new[]
{
new AzureNative.ServiceFabric.Inputs.FrontendConfigurationArgs
{
ApplicationGatewayBackendAddressPoolId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/applicationGateways/appgw-test/backendAddressPools/appgwBepoolTest",
LoadBalancerBackendAddressPoolId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/backendAddressPools/LoadBalancerBEAddressPool",
LoadBalancerInboundNatPoolId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/inboundNatPools/LoadBalancerNATPool",
},
},
IsPrimary = false,
IsSpotVM = true,
IsStateless = true,
MultiplePlacementGroups = true,
NatGatewayId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/natGateways/myNatGateway",
NodeTypeName = "BE-testResourceGroup-testRegion-test",
PlacementProperties =
{
{ "HasSSD", "true" },
{ "NodeColor", "green" },
{ "SomeProperty", "5" },
},
ResourceGroupName = "resRg",
SecureBootEnabled = true,
SecurityType = AzureNative.ServiceFabric.SecurityType.TrustedLaunch,
ServiceArtifactReferenceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Compute/galleries/myGallery/serviceArtifacts/myServiceArtifact/vmArtifactsProfiles/myVmArtifactProfile",
SpotRestoreTimeout = "PT30M",
SubnetId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1",
UseDefaultPublicLoadBalancer = true,
UseEphemeralOSDisk = true,
VmExtensions = new[]
{
new AzureNative.ServiceFabric.Inputs.VMSSExtensionArgs
{
AutoUpgradeMinorVersion = true,
EnableAutomaticUpgrade = true,
ForceUpdateTag = "v.1.0",
Name = "Microsoft.Azure.Geneva.GenevaMonitoring",
Publisher = "Microsoft.Azure.Geneva",
Settings = null,
SetupOrder = new[]
{
AzureNative.ServiceFabric.VmssExtensionSetupOrder.BeforeSFRuntime,
},
Type = "GenevaMonitoring",
TypeHandlerVersion = "2.0",
},
},
VmImageOffer = "WindowsServer",
VmImagePublisher = "MicrosoftWindowsServer",
VmImageSku = "2016-Datacenter-Server-Core",
VmImageVersion = "latest",
VmInstanceCount = 10,
VmManagedIdentity = new AzureNative.ServiceFabric.Inputs.VmManagedIdentityArgs
{
UserAssignedIdentities = new[]
{
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity",
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity2",
},
},
VmSecrets = new[]
{
new AzureNative.ServiceFabric.Inputs.VaultSecretGroupArgs
{
SourceVault = new AzureNative.ServiceFabric.Inputs.SubResourceArgs
{
Id = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.KeyVault/vaults/myVault",
},
VaultCertificates = new[]
{
new AzureNative.ServiceFabric.Inputs.VaultCertificateArgs
{
CertificateStore = "My",
CertificateUrl = "https://myVault.vault.azure.net:443/secrets/myCert/ef1a31d39e1f46bca33def54b6cda54c",
},
},
},
},
VmSetupActions = new[]
{
AzureNative.ServiceFabric.VmSetupAction.EnableContainers,
AzureNative.ServiceFabric.VmSetupAction.EnableHyperV,
},
VmSize = "Standard_DS3",
});
});
package main
import (
servicefabric "github.com/pulumi/pulumi-azure-native-sdk/servicefabric/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := servicefabric.NewNodeType(ctx, "nodeType", &servicefabric.NodeTypeArgs{
AdditionalDataDisks: servicefabric.VmssDataDiskArray{
&servicefabric.VmssDataDiskArgs{
DiskLetter: pulumi.String("F"),
DiskSizeGB: pulumi.Int(256),
DiskType: pulumi.String(servicefabric.DiskType_StandardSSD_LRS),
Lun: pulumi.Int(1),
},
&servicefabric.VmssDataDiskArgs{
DiskLetter: pulumi.String("G"),
DiskSizeGB: pulumi.Int(150),
DiskType: pulumi.String(servicefabric.DiskType_Premium_LRS),
Lun: pulumi.Int(2),
},
},
AdditionalNetworkInterfaceConfigurations: servicefabric.AdditionalNetworkInterfaceConfigurationArray{
&servicefabric.AdditionalNetworkInterfaceConfigurationArgs{
DscpConfiguration: &servicefabric.SubResourceArgs{
Id: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/dscpConfigurations/myDscpConfig"),
},
EnableAcceleratedNetworking: pulumi.Bool(true),
IpConfigurations: servicefabric.IpConfigurationArray{
&servicefabric.IpConfigurationArgs{
ApplicationGatewayBackendAddressPools: servicefabric.SubResourceArray{
&servicefabric.SubResourceArgs{
Id: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/applicationGateways/appgw-test/backendAddressPools/appgwBepoolTest"),
},
},
LoadBalancerBackendAddressPools: servicefabric.SubResourceArray{
&servicefabric.SubResourceArgs{
Id: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/backendAddressPools/LoadBalancerBEAddressPool"),
},
},
LoadBalancerInboundNatPools: servicefabric.SubResourceArray{
&servicefabric.SubResourceArgs{
Id: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/inboundNatPools/LoadBalancerNATPool"),
},
},
Name: pulumi.String("ipconfig-1"),
PrivateIPAddressVersion: pulumi.String(servicefabric.PrivateIPAddressVersionIPv4),
PublicIPAddressConfiguration: &servicefabric.IpConfigurationPublicIPAddressConfigurationArgs{
IpTags: servicefabric.IpTagArray{
&servicefabric.IpTagArgs{
IpTagType: pulumi.String("RoutingPreference"),
Tag: pulumi.String("Internet"),
},
},
Name: pulumi.String("publicip-1"),
PublicIPAddressVersion: pulumi.String(servicefabric.PublicIPAddressVersionIPv4),
},
Subnet: &servicefabric.SubResourceArgs{
Id: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1"),
},
},
},
Name: pulumi.String("nic-1"),
},
},
Capacities: pulumi.StringMap{
"ClientConnections": pulumi.String("65536"),
},
ClusterName: pulumi.String("myCluster"),
ComputerNamePrefix: pulumi.String("BE"),
DataDiskLetter: pulumi.String("S"),
DataDiskSizeGB: pulumi.Int(200),
DataDiskType: pulumi.String(servicefabric.DiskType_Premium_LRS),
DscpConfigurationId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/dscpConfigurations/myDscpConfig"),
EnableAcceleratedNetworking: pulumi.Bool(true),
EnableEncryptionAtHost: pulumi.Bool(true),
EnableNodePublicIP: pulumi.Bool(true),
EnableNodePublicIPv6: pulumi.Bool(true),
EnableOverProvisioning: pulumi.Bool(false),
EvictionPolicy: pulumi.String(servicefabric.EvictionPolicyTypeDeallocate),
FrontendConfigurations: servicefabric.FrontendConfigurationArray{
&servicefabric.FrontendConfigurationArgs{
ApplicationGatewayBackendAddressPoolId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/applicationGateways/appgw-test/backendAddressPools/appgwBepoolTest"),
LoadBalancerBackendAddressPoolId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/backendAddressPools/LoadBalancerBEAddressPool"),
LoadBalancerInboundNatPoolId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/inboundNatPools/LoadBalancerNATPool"),
},
},
IsPrimary: pulumi.Bool(false),
IsSpotVM: pulumi.Bool(true),
IsStateless: pulumi.Bool(true),
MultiplePlacementGroups: pulumi.Bool(true),
NatGatewayId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/natGateways/myNatGateway"),
NodeTypeName: pulumi.String("BE-testResourceGroup-testRegion-test"),
PlacementProperties: pulumi.StringMap{
"HasSSD": pulumi.String("true"),
"NodeColor": pulumi.String("green"),
"SomeProperty": pulumi.String("5"),
},
ResourceGroupName: pulumi.String("resRg"),
SecureBootEnabled: pulumi.Bool(true),
SecurityType: pulumi.String(servicefabric.SecurityTypeTrustedLaunch),
ServiceArtifactReferenceId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Compute/galleries/myGallery/serviceArtifacts/myServiceArtifact/vmArtifactsProfiles/myVmArtifactProfile"),
SpotRestoreTimeout: pulumi.String("PT30M"),
SubnetId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1"),
UseDefaultPublicLoadBalancer: pulumi.Bool(true),
UseEphemeralOSDisk: pulumi.Bool(true),
VmExtensions: servicefabric.VMSSExtensionArray{
&servicefabric.VMSSExtensionArgs{
AutoUpgradeMinorVersion: pulumi.Bool(true),
EnableAutomaticUpgrade: pulumi.Bool(true),
ForceUpdateTag: pulumi.String("v.1.0"),
Name: pulumi.String("Microsoft.Azure.Geneva.GenevaMonitoring"),
Publisher: pulumi.String("Microsoft.Azure.Geneva"),
Settings: pulumi.Any(map[string]interface{}{}),
SetupOrder: pulumi.StringArray{
pulumi.String(servicefabric.VmssExtensionSetupOrderBeforeSFRuntime),
},
Type: pulumi.String("GenevaMonitoring"),
TypeHandlerVersion: pulumi.String("2.0"),
},
},
VmImageOffer: pulumi.String("WindowsServer"),
VmImagePublisher: pulumi.String("MicrosoftWindowsServer"),
VmImageSku: pulumi.String("2016-Datacenter-Server-Core"),
VmImageVersion: pulumi.String("latest"),
VmInstanceCount: pulumi.Int(10),
VmManagedIdentity: &servicefabric.VmManagedIdentityArgs{
UserAssignedIdentities: pulumi.StringArray{
pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity"),
pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity2"),
},
},
VmSecrets: servicefabric.VaultSecretGroupArray{
&servicefabric.VaultSecretGroupArgs{
SourceVault: &servicefabric.SubResourceArgs{
Id: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.KeyVault/vaults/myVault"),
},
VaultCertificates: servicefabric.VaultCertificateArray{
&servicefabric.VaultCertificateArgs{
CertificateStore: pulumi.String("My"),
CertificateUrl: pulumi.String("https://myVault.vault.azure.net:443/secrets/myCert/ef1a31d39e1f46bca33def54b6cda54c"),
},
},
},
},
VmSetupActions: pulumi.StringArray{
pulumi.String(servicefabric.VmSetupActionEnableContainers),
pulumi.String(servicefabric.VmSetupActionEnableHyperV),
},
VmSize: pulumi.String("Standard_DS3"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.servicefabric.NodeType;
import com.pulumi.azurenative.servicefabric.NodeTypeArgs;
import com.pulumi.azurenative.servicefabric.inputs.VmssDataDiskArgs;
import com.pulumi.azurenative.servicefabric.inputs.AdditionalNetworkInterfaceConfigurationArgs;
import com.pulumi.azurenative.servicefabric.inputs.SubResourceArgs;
import com.pulumi.azurenative.servicefabric.inputs.FrontendConfigurationArgs;
import com.pulumi.azurenative.servicefabric.inputs.VMSSExtensionArgs;
import com.pulumi.azurenative.servicefabric.inputs.VmManagedIdentityArgs;
import com.pulumi.azurenative.servicefabric.inputs.VaultSecretGroupArgs;
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 nodeType = new NodeType("nodeType", NodeTypeArgs.builder()
.additionalDataDisks(
VmssDataDiskArgs.builder()
.diskLetter("F")
.diskSizeGB(256)
.diskType("StandardSSD_LRS")
.lun(1)
.build(),
VmssDataDiskArgs.builder()
.diskLetter("G")
.diskSizeGB(150)
.diskType("Premium_LRS")
.lun(2)
.build())
.additionalNetworkInterfaceConfigurations(AdditionalNetworkInterfaceConfigurationArgs.builder()
.dscpConfiguration(SubResourceArgs.builder()
.id("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/dscpConfigurations/myDscpConfig")
.build())
.enableAcceleratedNetworking(true)
.ipConfigurations(IpConfigurationArgs.builder()
.applicationGatewayBackendAddressPools(SubResourceArgs.builder()
.id("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/applicationGateways/appgw-test/backendAddressPools/appgwBepoolTest")
.build())
.loadBalancerBackendAddressPools(SubResourceArgs.builder()
.id("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/backendAddressPools/LoadBalancerBEAddressPool")
.build())
.loadBalancerInboundNatPools(SubResourceArgs.builder()
.id("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/inboundNatPools/LoadBalancerNATPool")
.build())
.name("ipconfig-1")
.privateIPAddressVersion("IPv4")
.publicIPAddressConfiguration(IpConfigurationPublicIPAddressConfigurationArgs.builder()
.ipTags(IpTagArgs.builder()
.ipTagType("RoutingPreference")
.tag("Internet")
.build())
.name("publicip-1")
.publicIPAddressVersion("IPv4")
.build())
.subnet(SubResourceArgs.builder()
.id("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1")
.build())
.build())
.name("nic-1")
.build())
.capacities(Map.of("ClientConnections", "65536"))
.clusterName("myCluster")
.computerNamePrefix("BE")
.dataDiskLetter("S")
.dataDiskSizeGB(200)
.dataDiskType("Premium_LRS")
.dscpConfigurationId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/dscpConfigurations/myDscpConfig")
.enableAcceleratedNetworking(true)
.enableEncryptionAtHost(true)
.enableNodePublicIP(true)
.enableNodePublicIPv6(true)
.enableOverProvisioning(false)
.evictionPolicy("Deallocate")
.frontendConfigurations(FrontendConfigurationArgs.builder()
.applicationGatewayBackendAddressPoolId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/applicationGateways/appgw-test/backendAddressPools/appgwBepoolTest")
.loadBalancerBackendAddressPoolId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/backendAddressPools/LoadBalancerBEAddressPool")
.loadBalancerInboundNatPoolId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/loadBalancers/test-LB/inboundNatPools/LoadBalancerNATPool")
.build())
.isPrimary(false)
.isSpotVM(true)
.isStateless(true)
.multiplePlacementGroups(true)
.natGatewayId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/natGateways/myNatGateway")
.nodeTypeName("BE-testResourceGroup-testRegion-test")
.placementProperties(Map.ofEntries(
Map.entry("HasSSD", "true"),
Map.entry("NodeColor", "green"),
Map.entry("SomeProperty", "5")
))
.resourceGroupName("resRg")
.secureBootEnabled(true)
.securityType("TrustedLaunch")
.serviceArtifactReferenceId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Compute/galleries/myGallery/serviceArtifacts/myServiceArtifact/vmArtifactsProfiles/myVmArtifactProfile")
.spotRestoreTimeout("PT30M")
.subnetId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1")
.useDefaultPublicLoadBalancer(true)
.useEphemeralOSDisk(true)
.vmExtensions(VMSSExtensionArgs.builder()
.autoUpgradeMinorVersion(true)
.enableAutomaticUpgrade(true)
.forceUpdateTag("v.1.0")
.name("Microsoft.Azure.Geneva.GenevaMonitoring")
.publisher("Microsoft.Azure.Geneva")
.settings(Map.ofEntries(
))
.setupOrder("BeforeSFRuntime")
.type("GenevaMonitoring")
.typeHandlerVersion("2.0")
.build())
.vmImageOffer("WindowsServer")
.vmImagePublisher("MicrosoftWindowsServer")
.vmImageSku("2016-Datacenter-Server-Core")
.vmImageVersion("latest")
.vmInstanceCount(10)
.vmManagedIdentity(VmManagedIdentityArgs.builder()
.userAssignedIdentities(
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity",
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity2")
.build())
.vmSecrets(VaultSecretGroupArgs.builder()
.sourceVault(SubResourceArgs.builder()
.id("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resRg/providers/Microsoft.KeyVault/vaults/myVault")
.build())
.vaultCertificates(VaultCertificateArgs.builder()
.certificateStore("My")
.certificateUrl("https://myVault.vault.azure.net:443/secrets/myCert/ef1a31d39e1f46bca33def54b6cda54c")
.build())
.build())
.vmSetupActions(
"EnableContainers",
"EnableHyperV")
.vmSize("Standard_DS3")
.build());
}
}

Put a node type with minimum parameters

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var nodeType = new AzureNative.ServiceFabric.NodeType("nodeType", new()
{
ClusterName = "myCluster",
DataDiskSizeGB = 200,
IsPrimary = false,
NodeTypeName = "BE",
ResourceGroupName = "resRg",
VmImageOffer = "WindowsServer",
VmImagePublisher = "MicrosoftWindowsServer",
VmImageSku = "2016-Datacenter-Server-Core",
VmImageVersion = "latest",
VmInstanceCount = 10,
VmSize = "Standard_D3",
});
});
package main
import (
servicefabric "github.com/pulumi/pulumi-azure-native-sdk/servicefabric/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := servicefabric.NewNodeType(ctx, "nodeType", &servicefabric.NodeTypeArgs{
ClusterName: pulumi.String("myCluster"),
DataDiskSizeGB: pulumi.Int(200),
IsPrimary: pulumi.Bool(false),
NodeTypeName: pulumi.String("BE"),
ResourceGroupName: pulumi.String("resRg"),
VmImageOffer: pulumi.String("WindowsServer"),
VmImagePublisher: pulumi.String("MicrosoftWindowsServer"),
VmImageSku: pulumi.String("2016-Datacenter-Server-Core"),
VmImageVersion: pulumi.String("latest"),
VmInstanceCount: pulumi.Int(10),
VmSize: pulumi.String("Standard_D3"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.servicefabric.NodeType;
import com.pulumi.azurenative.servicefabric.NodeTypeArgs;
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 nodeType = new NodeType("nodeType", NodeTypeArgs.builder()
.clusterName("myCluster")
.dataDiskSizeGB(200)
.isPrimary(false)
.nodeTypeName("BE")
.resourceGroupName("resRg")
.vmImageOffer("WindowsServer")
.vmImagePublisher("MicrosoftWindowsServer")
.vmImageSku("2016-Datacenter-Server-Core")
.vmImageVersion("latest")
.vmInstanceCount(10)
.vmSize("Standard_D3")
.build());
}
}

Put an stateless node type with temporary disk for service fabric

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var nodeType = new AzureNative.ServiceFabric.NodeType("nodeType", new()
{
ClusterName = "myCluster",
EnableEncryptionAtHost = true,
IsPrimary = false,
IsStateless = true,
MultiplePlacementGroups = true,
NodeTypeName = "BE",
ResourceGroupName = "resRg",
UseTempDataDisk = true,
VmExtensions = new[]
{
new AzureNative.ServiceFabric.Inputs.VMSSExtensionArgs
{
AutoUpgradeMinorVersion = true,
Name = "Microsoft.Azure.Geneva.GenevaMonitoring",
Publisher = "Microsoft.Azure.Geneva",
Settings = null,
Type = "GenevaMonitoring",
TypeHandlerVersion = "2.0",
},
},
VmImageOffer = "WindowsServer",
VmImagePublisher = "MicrosoftWindowsServer",
VmImageSku = "2016-Datacenter-Server-Core",
VmImageVersion = "latest",
VmInstanceCount = 10,
VmSize = "Standard_DS3",
});
});
package main
import (
servicefabric "github.com/pulumi/pulumi-azure-native-sdk/servicefabric/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := servicefabric.NewNodeType(ctx, "nodeType", &servicefabric.NodeTypeArgs{
ClusterName: pulumi.String("myCluster"),
EnableEncryptionAtHost: pulumi.Bool(true),
IsPrimary: pulumi.Bool(false),
IsStateless: pulumi.Bool(true),
MultiplePlacementGroups: pulumi.Bool(true),
NodeTypeName: pulumi.String("BE"),
ResourceGroupName: pulumi.String("resRg"),
UseTempDataDisk: pulumi.Bool(true),
VmExtensions: servicefabric.VMSSExtensionArray{
&servicefabric.VMSSExtensionArgs{
AutoUpgradeMinorVersion: pulumi.Bool(true),
Name: pulumi.String("Microsoft.Azure.Geneva.GenevaMonitoring"),
Publisher: pulumi.String("Microsoft.Azure.Geneva"),
Settings: pulumi.Any(map[string]interface{}{}),
Type: pulumi.String("GenevaMonitoring"),
TypeHandlerVersion: pulumi.String("2.0"),
},
},
VmImageOffer: pulumi.String("WindowsServer"),
VmImagePublisher: pulumi.String("MicrosoftWindowsServer"),
VmImageSku: pulumi.String("2016-Datacenter-Server-Core"),
VmImageVersion: pulumi.String("latest"),
VmInstanceCount: pulumi.Int(10),
VmSize: pulumi.String("Standard_DS3"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.servicefabric.NodeType;
import com.pulumi.azurenative.servicefabric.NodeTypeArgs;
import com.pulumi.azurenative.servicefabric.inputs.VMSSExtensionArgs;
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 nodeType = new NodeType("nodeType", NodeTypeArgs.builder()
.clusterName("myCluster")
.enableEncryptionAtHost(true)
.isPrimary(false)
.isStateless(true)
.multiplePlacementGroups(true)
.nodeTypeName("BE")
.resourceGroupName("resRg")
.useTempDataDisk(true)
.vmExtensions(VMSSExtensionArgs.builder()
.autoUpgradeMinorVersion(true)
.name("Microsoft.Azure.Geneva.GenevaMonitoring")
.publisher("Microsoft.Azure.Geneva")
.settings(Map.ofEntries(
))
.type("GenevaMonitoring")
.typeHandlerVersion("2.0")
.build())
.vmImageOffer("WindowsServer")
.vmImagePublisher("MicrosoftWindowsServer")
.vmImageSku("2016-Datacenter-Server-Core")
.vmImageVersion("latest")
.vmInstanceCount(10)
.vmSize("Standard_DS3")
.build());
}
}

Put node type with custom vm image

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var nodeType = new AzureNative.ServiceFabric.NodeType("nodeType", new()
{
ClusterName = "myCluster",
DataDiskSizeGB = 200,
IsPrimary = false,
NodeTypeName = "BE",
ResourceGroupName = "resRg",
VmImageResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-custom-image/providers/Microsoft.Compute/galleries/myCustomImages/images/Win2019DC",
VmInstanceCount = 10,
VmSize = "Standard_D3",
});
});
package main
import (
servicefabric "github.com/pulumi/pulumi-azure-native-sdk/servicefabric/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := servicefabric.NewNodeType(ctx, "nodeType", &servicefabric.NodeTypeArgs{
ClusterName: pulumi.String("myCluster"),
DataDiskSizeGB: pulumi.Int(200),
IsPrimary: pulumi.Bool(false),
NodeTypeName: pulumi.String("BE"),
ResourceGroupName: pulumi.String("resRg"),
VmImageResourceId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-custom-image/providers/Microsoft.Compute/galleries/myCustomImages/images/Win2019DC"),
VmInstanceCount: pulumi.Int(10),
VmSize: pulumi.String("Standard_D3"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.servicefabric.NodeType;
import com.pulumi.azurenative.servicefabric.NodeTypeArgs;
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 nodeType = new NodeType("nodeType", NodeTypeArgs.builder()
.clusterName("myCluster")
.dataDiskSizeGB(200)
.isPrimary(false)
.nodeTypeName("BE")
.resourceGroupName("resRg")
.vmImageResourceId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-custom-image/providers/Microsoft.Compute/galleries/myCustomImages/images/Win2019DC")
.vmInstanceCount(10)
.vmSize("Standard_D3")
.build());
}
}

Put node type with dedicated hosts

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var nodeType = new AzureNative.ServiceFabric.NodeType("nodeType", new()
{
Capacities = null,
ClusterName = "myCluster",
DataDiskSizeGB = 200,
DataDiskType = AzureNative.ServiceFabric.DiskType.StandardSSD_LRS,
HostGroupId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testhostgroupRG/providers/Microsoft.Compute/hostGroups/testHostGroup",
IsPrimary = false,
NodeTypeName = "BE",
PlacementProperties = null,
ResourceGroupName = "resRg",
VmImageOffer = "WindowsServer",
VmImagePublisher = "MicrosoftWindowsServer",
VmImageSku = "2019-Datacenter",
VmImageVersion = "latest",
VmInstanceCount = 10,
VmSize = "Standard_D8s_v3",
Zones = new[]
{
"1",
},
});
});
package main
import (
servicefabric "github.com/pulumi/pulumi-azure-native-sdk/servicefabric/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := servicefabric.NewNodeType(ctx, "nodeType", &servicefabric.NodeTypeArgs{
Capacities: pulumi.StringMap{},
ClusterName: pulumi.String("myCluster"),
DataDiskSizeGB: pulumi.Int(200),
DataDiskType: pulumi.String(servicefabric.DiskType_StandardSSD_LRS),
HostGroupId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testhostgroupRG/providers/Microsoft.Compute/hostGroups/testHostGroup"),
IsPrimary: pulumi.Bool(false),
NodeTypeName: pulumi.String("BE"),
PlacementProperties: pulumi.StringMap{},
ResourceGroupName: pulumi.String("resRg"),
VmImageOffer: pulumi.String("WindowsServer"),
VmImagePublisher: pulumi.String("MicrosoftWindowsServer"),
VmImageSku: pulumi.String("2019-Datacenter"),
VmImageVersion: pulumi.String("latest"),
VmInstanceCount: pulumi.Int(10),
VmSize: pulumi.String("Standard_D8s_v3"),
Zones: pulumi.StringArray{
pulumi.String("1"),
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.servicefabric.NodeType;
import com.pulumi.azurenative.servicefabric.NodeTypeArgs;
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 nodeType = new NodeType("nodeType", NodeTypeArgs.builder()
.capacities(Map.ofEntries(
))
.clusterName("myCluster")
.dataDiskSizeGB(200)
.dataDiskType("StandardSSD_LRS")
.hostGroupId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testhostgroupRG/providers/Microsoft.Compute/hostGroups/testHostGroup")
.isPrimary(false)
.nodeTypeName("BE")
.placementProperties(Map.ofEntries(
))
.resourceGroupName("resRg")
.vmImageOffer("WindowsServer")
.vmImagePublisher("MicrosoftWindowsServer")
.vmImageSku("2019-Datacenter")
.vmImageVersion("latest")
.vmInstanceCount(10)
.vmSize("Standard_D8s_v3")
.zones("1")
.build());
}
}

Put node type with shared galleries custom vm image

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var nodeType = new AzureNative.ServiceFabric.NodeType("nodeType", new()
{
ClusterName = "myCluster",
DataDiskSizeGB = 200,
IsPrimary = false,
NodeTypeName = "BE",
ResourceGroupName = "resRg",
VmInstanceCount = 10,
VmSharedGalleryImageId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-custom-image/providers/Microsoft.Compute/sharedGalleries/35349201-a0b3-405e-8a23-9f1450984307-SFSHAREDGALLERY/images/TestNoProdContainerDImage/versions/latest",
VmSize = "Standard_D3",
});
});
package main
import (
servicefabric "github.com/pulumi/pulumi-azure-native-sdk/servicefabric/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := servicefabric.NewNodeType(ctx, "nodeType", &servicefabric.NodeTypeArgs{
ClusterName: pulumi.String("myCluster"),
DataDiskSizeGB: pulumi.Int(200),
IsPrimary: pulumi.Bool(false),
NodeTypeName: pulumi.String("BE"),
ResourceGroupName: pulumi.String("resRg"),
VmInstanceCount: pulumi.Int(10),
VmSharedGalleryImageId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-custom-image/providers/Microsoft.Compute/sharedGalleries/35349201-a0b3-405e-8a23-9f1450984307-SFSHAREDGALLERY/images/TestNoProdContainerDImage/versions/latest"),
VmSize: pulumi.String("Standard_D3"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.servicefabric.NodeType;
import com.pulumi.azurenative.servicefabric.NodeTypeArgs;
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 nodeType = new NodeType("nodeType", NodeTypeArgs.builder()
.clusterName("myCluster")
.dataDiskSizeGB(200)
.isPrimary(false)
.nodeTypeName("BE")
.resourceGroupName("resRg")
.vmInstanceCount(10)
.vmSharedGalleryImageId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-custom-image/providers/Microsoft.Compute/sharedGalleries/35349201-a0b3-405e-8a23-9f1450984307-SFSHAREDGALLERY/images/TestNoProdContainerDImage/versions/latest")
.vmSize("Standard_D3")
.build());
}
}

Put node type with vm image plan

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var nodeType = new AzureNative.ServiceFabric.NodeType("nodeType", new()
{
ClusterName = "myCluster",
DataDiskSizeGB = 200,
IsPrimary = false,
NodeTypeName = "BE",
ResourceGroupName = "resRg",
VmImageOffer = "windows_2022_test",
VmImagePlan = new AzureNative.ServiceFabric.Inputs.VmImagePlanArgs
{
Name = "win_2022_test_20_10_gen2",
Product = "windows_2022_test",
Publisher = "testpublisher",
},
VmImagePublisher = "testpublisher",
VmImageSku = "win_2022_test_20_10_gen2",
VmImageVersion = "latest",
VmInstanceCount = 10,
VmSize = "Standard_D3",
});
});
package main
import (
servicefabric "github.com/pulumi/pulumi-azure-native-sdk/servicefabric/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := servicefabric.NewNodeType(ctx, "nodeType", &servicefabric.NodeTypeArgs{
ClusterName: pulumi.String("myCluster"),
DataDiskSizeGB: pulumi.Int(200),
IsPrimary: pulumi.Bool(false),
NodeTypeName: pulumi.String("BE"),
ResourceGroupName: pulumi.String("resRg"),
VmImageOffer: pulumi.String("windows_2022_test"),
VmImagePlan: &servicefabric.VmImagePlanArgs{
Name: pulumi.String("win_2022_test_20_10_gen2"),
Product: pulumi.String("windows_2022_test"),
Publisher: pulumi.String("testpublisher"),
},
VmImagePublisher: pulumi.String("testpublisher"),
VmImageSku: pulumi.String("win_2022_test_20_10_gen2"),
VmImageVersion: pulumi.String("latest"),
VmInstanceCount: pulumi.Int(10),
VmSize: pulumi.String("Standard_D3"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.servicefabric.NodeType;
import com.pulumi.azurenative.servicefabric.NodeTypeArgs;
import com.pulumi.azurenative.servicefabric.inputs.VmImagePlanArgs;
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 nodeType = new NodeType("nodeType", NodeTypeArgs.builder()
.clusterName("myCluster")
.dataDiskSizeGB(200)
.isPrimary(false)
.nodeTypeName("BE")
.resourceGroupName("resRg")
.vmImageOffer("windows_2022_test")
.vmImagePlan(VmImagePlanArgs.builder()
.name("win_2022_test_20_10_gen2")
.product("windows_2022_test")
.publisher("testpublisher")
.build())
.vmImagePublisher("testpublisher")
.vmImageSku("win_2022_test_20_10_gen2")
.vmImageVersion("latest")
.vmInstanceCount(10)
.vmSize("Standard_D3")
.build());
}
}

Import

An existing resource can be imported using its type token, name, and identifier, e.g.

$ pulumi import azure-native:servicefabric:NodeType BE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/nodeTypes/{nodeTypeName}

Constructors

Link copied to clipboard
constructor(additionalDataDisks: Output<List<VmssDataDiskArgs>>? = null, additionalNetworkInterfaceConfigurations: Output<List<AdditionalNetworkInterfaceConfigurationArgs>>? = null, applicationPorts: Output<EndpointRangeDescriptionArgs>? = null, capacities: Output<Map<String, String>>? = null, clusterName: Output<String>? = null, computerNamePrefix: Output<String>? = null, dataDiskLetter: Output<String>? = null, dataDiskSizeGB: Output<Int>? = null, dataDiskType: Output<Either<String, DiskType>>? = null, dscpConfigurationId: Output<String>? = null, enableAcceleratedNetworking: Output<Boolean>? = null, enableEncryptionAtHost: Output<Boolean>? = null, enableNodePublicIP: Output<Boolean>? = null, enableNodePublicIPv6: Output<Boolean>? = null, enableOverProvisioning: Output<Boolean>? = null, ephemeralPorts: Output<EndpointRangeDescriptionArgs>? = null, evictionPolicy: Output<Either<String, EvictionPolicyType>>? = null, frontendConfigurations: Output<List<FrontendConfigurationArgs>>? = null, hostGroupId: Output<String>? = null, isPrimary: Output<Boolean>? = null, isSpotVM: Output<Boolean>? = null, isStateless: Output<Boolean>? = null, multiplePlacementGroups: Output<Boolean>? = null, natConfigurations: Output<List<NodeTypeNatConfigArgs>>? = null, natGatewayId: Output<String>? = null, networkSecurityRules: Output<List<NetworkSecurityRuleArgs>>? = null, nodeTypeName: Output<String>? = null, placementProperties: Output<Map<String, String>>? = null, resourceGroupName: Output<String>? = null, secureBootEnabled: Output<Boolean>? = null, securityType: Output<Either<String, SecurityType>>? = null, serviceArtifactReferenceId: Output<String>? = null, sku: Output<NodeTypeSkuArgs>? = null, spotRestoreTimeout: Output<String>? = null, subnetId: Output<String>? = null, tags: Output<Map<String, String>>? = null, useDefaultPublicLoadBalancer: Output<Boolean>? = null, useEphemeralOSDisk: Output<Boolean>? = null, useTempDataDisk: Output<Boolean>? = null, vmExtensions: Output<List<VMSSExtensionArgs>>? = null, vmImageOffer: Output<String>? = null, vmImagePlan: Output<VmImagePlanArgs>? = null, vmImagePublisher: Output<String>? = null, vmImageResourceId: Output<String>? = null, vmImageSku: Output<String>? = null, vmImageVersion: Output<String>? = null, vmInstanceCount: Output<Int>? = null, vmManagedIdentity: Output<VmManagedIdentityArgs>? = null, vmSecrets: Output<List<VaultSecretGroupArgs>>? = null, vmSetupActions: Output<List<Either<String, VmSetupAction>>>? = null, vmSharedGalleryImageId: Output<String>? = null, vmSize: Output<String>? = null, zones: Output<List<String>>? = null)

Properties

Link copied to clipboard

Additional managed data disks.

Link copied to clipboard

Specifies the settings for any additional secondary network interfaces to attach to the node type.

Link copied to clipboard

The range of ports from which cluster assigned port to Service Fabric applications.

Link copied to clipboard
val capacities: Output<Map<String, String>>? = null

The capacity tags applied to the nodes in the node type, the cluster resource manager uses these tags to understand how much resource a node has.

Link copied to clipboard
val clusterName: Output<String>? = null

The name of the cluster resource.

Link copied to clipboard
val computerNamePrefix: Output<String>? = null

Specifies the computer name prefix. Limited to 9 characters. If specified, allows for a longer name to be specified for the node type name.

Link copied to clipboard
val dataDiskLetter: Output<String>? = null

Managed data disk letter. It can not use the reserved letter C or D and it can not change after created.

Link copied to clipboard
val dataDiskSizeGB: Output<Int>? = null

Disk size for the managed disk attached to the vms on the node type in GBs.

Link copied to clipboard
val dataDiskType: Output<Either<String, DiskType>>? = null

Managed data disk type. Specifies the storage account type for the managed disk

Link copied to clipboard
val dscpConfigurationId: Output<String>? = null

Specifies the resource id of the DSCP configuration to apply to the node type network interface.

Link copied to clipboard

Specifies whether the network interface is accelerated networking-enabled.

Link copied to clipboard
val enableEncryptionAtHost: Output<Boolean>? = null

Enable or disable the Host Encryption for the virtual machines on the node type. This will enable the encryption for all the disks including Resource/Temp disk at host itself. Default: The Encryption at host will be disabled unless this property is set to true for the resource.

Link copied to clipboard
val enableNodePublicIP: Output<Boolean>? = null

Specifies whether each node is allocated its own public IPv4 address. This is only supported on secondary node types with custom Load Balancers.

Link copied to clipboard
val enableNodePublicIPv6: Output<Boolean>? = null

Specifies whether each node is allocated its own public IPv6 address. This is only supported on secondary node types with custom Load Balancers.

Link copied to clipboard
val enableOverProvisioning: Output<Boolean>? = null

Specifies whether the node type should be overprovisioned. It is only allowed for stateless node types.

Link copied to clipboard

The range of ephemeral ports that nodes in this node type should be configured with.

Link copied to clipboard
val evictionPolicy: Output<Either<String, EvictionPolicyType>>? = null

Specifies the eviction policy for virtual machines in a SPOT node type. Default is Delete.

Link copied to clipboard

Indicates the node type uses its own frontend configurations instead of the default one for the cluster. This setting can only be specified for non-primary node types and can not be added or removed after the node type is created.

Link copied to clipboard
val hostGroupId: Output<String>? = null

Specifies the full host group resource Id. This property is used for deploying on azure dedicated hosts.

Link copied to clipboard
val isPrimary: Output<Boolean>? = null

Indicates the Service Fabric system services for the cluster will run on this node type. This setting cannot be changed once the node type is created.

Link copied to clipboard
val isSpotVM: Output<Boolean>? = null

Indicates whether the node type will be Spot Virtual Machines. Azure will allocate the VMs if there is capacity available and the VMs can be evicted at any time.

Link copied to clipboard
val isStateless: Output<Boolean>? = null

Indicates if the node type can only host Stateless workloads.

Link copied to clipboard
val multiplePlacementGroups: Output<Boolean>? = null

Indicates if scale set associated with the node type can be composed of multiple placement groups.

Link copied to clipboard

Specifies the NAT configuration on default public Load Balancer for the node type. This is only supported for node types use the default public Load Balancer.

Link copied to clipboard
val natGatewayId: Output<String>? = null

Specifies the resource id of a NAT Gateway to attach to the subnet of this node type. Node type must use custom load balancer.

Link copied to clipboard

The Network Security Rules for this node type. This setting can only be specified for node types that are configured with frontend configurations.

Link copied to clipboard
val nodeTypeName: Output<String>? = null

The name of the node type.

Link copied to clipboard
val placementProperties: Output<Map<String, String>>? = null

The placement tags applied to nodes in the node type, which can be used to indicate where certain services (workload) should run.

Link copied to clipboard
val resourceGroupName: Output<String>? = null

The name of the resource group.

Link copied to clipboard
val secureBootEnabled: Output<Boolean>? = null

Specifies whether secure boot should be enabled on the nodeType. Can only be used with TrustedLaunch SecurityType

Link copied to clipboard
val securityType: Output<Either<String, SecurityType>>? = null

Specifies the security type of the nodeType. Only Standard and TrustedLaunch are currently supported

Link copied to clipboard
val serviceArtifactReferenceId: Output<String>? = null

Specifies the service artifact reference id used to set same image version for all virtual machines in the scale set when using 'latest' image version.

Link copied to clipboard
val sku: Output<NodeTypeSkuArgs>? = null

The node type sku.

Link copied to clipboard
val spotRestoreTimeout: Output<String>? = null

Indicates the time duration after which the platform will not try to restore the VMSS SPOT instances specified as ISO 8601.

Link copied to clipboard
val subnetId: Output<String>? = null

Indicates the resource id of the subnet for the node type.

Link copied to clipboard
val tags: Output<Map<String, String>>? = null

Azure resource tags.

Link copied to clipboard

Specifies whether the use public load balancer. If not specified and the node type doesn't have its own frontend configuration, it will be attached to the default load balancer. If the node type uses its own Load balancer and useDefaultPublicLoadBalancer is true, then the frontend has to be an Internal Load Balancer. If the node type uses its own Load balancer and useDefaultPublicLoadBalancer is false or not set, then the custom load balancer must include a public load balancer to provide outbound connectivity.

Link copied to clipboard
val useEphemeralOSDisk: Output<Boolean>? = null

Indicates whether to use ephemeral os disk. The sku selected on the vmSize property needs to support this feature.

Link copied to clipboard
val useTempDataDisk: Output<Boolean>? = null

Specifies whether to use the temporary disk for the service fabric data root, in which case no managed data disk will be attached and the temporary disk will be used. It is only allowed for stateless node types.

Link copied to clipboard
val vmExtensions: Output<List<VMSSExtensionArgs>>? = null

Set of extensions that should be installed onto the virtual machines.

Link copied to clipboard
val vmImageOffer: Output<String>? = null

The offer type of the Azure Virtual Machines Marketplace image. For example, UbuntuServer or WindowsServer.

Link copied to clipboard
val vmImagePlan: Output<VmImagePlanArgs>? = null

Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click Want to deploy programmatically, Get Started ->. Enter any required information and then click Save.

Link copied to clipboard
val vmImagePublisher: Output<String>? = null

The publisher of the Azure Virtual Machines Marketplace image. For example, Canonical or MicrosoftWindowsServer.

Link copied to clipboard
val vmImageResourceId: Output<String>? = null

Indicates the resource id of the vm image. This parameter is used for custom vm image.

Link copied to clipboard
val vmImageSku: Output<String>? = null

The SKU of the Azure Virtual Machines Marketplace image. For example, 14.04.0-LTS or 2012-R2-Datacenter.

Link copied to clipboard
val vmImageVersion: Output<String>? = null

The version of the Azure Virtual Machines Marketplace image. A value of 'latest' can be specified to select the latest version of an image. If omitted, the default is 'latest'.

Link copied to clipboard
val vmInstanceCount: Output<Int>? = null

The number of nodes in the node type.

Values:
-1 - Use when auto scale rules are configured or sku.capacity is defined
0 - Not supported
>0 - Use for manual scale.

Link copied to clipboard

Identities to assign to the virtual machine scale set under the node type.

Link copied to clipboard
val vmSecrets: Output<List<VaultSecretGroupArgs>>? = null

The secrets to install in the virtual machines.

Link copied to clipboard
val vmSetupActions: Output<List<Either<String, VmSetupAction>>>? = null

Specifies the actions to be performed on the vms before bootstrapping the service fabric runtime.

Link copied to clipboard
val vmSharedGalleryImageId: Output<String>? = null

Indicates the resource id of the vm shared galleries image. This parameter is used for custom vm image.

Link copied to clipboard
val vmSize: Output<String>? = null

The size of virtual machines in the pool. All virtual machines in a pool are the same size. For example, Standard_D3.

Link copied to clipboard
val zones: Output<List<String>>? = null

Specifies the availability zones where the node type would span across. If the cluster is not spanning across availability zones, initiates az migration for the cluster.

Functions

Link copied to clipboard
open override fun toJava(): NodeTypeArgs