Deploy SAP Virtual Instances on Azure

The azure-native:workloads:SapVirtualInstance resource, part of the Pulumi Azure Native provider, defines the complete infrastructure for SAP workloads on Azure: VMs, disks, networking, and high availability configuration. This guide focuses on three capabilities: three-tier and single-server deployment topologies, high availability with Availability Sets and Zones, and custom disk layouts and resource naming.

SAP Virtual Instances depend on existing VNets, subnets, resource groups, and SSH key pairs. The examples are intentionally small. Combine them with your own networking infrastructure and authentication credentials.

Deploy a three-tier SAP system with OS configuration

Most SAP deployments on Azure use a three-tier architecture with separate application servers, central services, and database servers. This configuration provisions the complete infrastructure with OS-level settings for SSH access and SAP domain configuration.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const sapVirtualInstance = new azure_native.workloads.SapVirtualInstance("sapVirtualInstance", {
    configuration: {
        appLocation: "eastus",
        configurationType: "DeploymentWithOSConfig",
        infrastructureConfiguration: {
            appResourceGroup: "X00-RG",
            applicationServer: {
                instanceCount: 6,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_E32ds_v4",
                },
            },
            centralServer: {
                instanceCount: 1,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_E16ds_v4",
                },
            },
            databaseServer: {
                databaseType: azure_native.workloads.SAPDatabaseType.HANA,
                instanceCount: 1,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_M32ts",
                },
            },
            deploymentType: "ThreeTier",
        },
        osSapConfiguration: {
            sapFqdn: "xyz.test.com",
        },
    },
    environment: azure_native.workloads.SAPEnvironmentType.Prod,
    location: "westcentralus",
    resourceGroupName: "test-rg",
    sapProduct: azure_native.workloads.SAPProductType.S4HANA,
    sapVirtualInstanceName: "X00",
    tags: {},
});
import pulumi
import pulumi_azure_native as azure_native

sap_virtual_instance = azure_native.workloads.SapVirtualInstance("sapVirtualInstance",
    configuration={
        "app_location": "eastus",
        "configuration_type": "DeploymentWithOSConfig",
        "infrastructure_configuration": {
            "app_resource_group": "X00-RG",
            "application_server": {
                "instance_count": 6,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_E32ds_v4",
                },
            },
            "central_server": {
                "instance_count": 1,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_E16ds_v4",
                },
            },
            "database_server": {
                "database_type": azure_native.workloads.SAPDatabaseType.HANA,
                "instance_count": 1,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_M32ts",
                },
            },
            "deployment_type": "ThreeTier",
        },
        "os_sap_configuration": {
            "sap_fqdn": "xyz.test.com",
        },
    },
    environment=azure_native.workloads.SAPEnvironmentType.PROD,
    location="westcentralus",
    resource_group_name="test-rg",
    sap_product=azure_native.workloads.SAPProductType.S4_HANA,
    sap_virtual_instance_name="X00",
    tags={})
package main

import (
	workloads "github.com/pulumi/pulumi-azure-native-sdk/workloads/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := workloads.NewSapVirtualInstance(ctx, "sapVirtualInstance", &workloads.SapVirtualInstanceArgs{
			Configuration: &workloads.DeploymentWithOSConfigurationArgs{
				AppLocation:       pulumi.String("eastus"),
				ConfigurationType: pulumi.String("DeploymentWithOSConfig"),
				InfrastructureConfiguration: workloads.ThreeTierConfiguration{
					AppResourceGroup: "X00-RG",
					ApplicationServer: workloads.ApplicationServerConfiguration{
						InstanceCount: 6,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_E32ds_v4",
						},
					},
					CentralServer: workloads.CentralServerConfiguration{
						InstanceCount: 1,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_E16ds_v4",
						},
					},
					DatabaseServer: workloads.DatabaseConfiguration{
						DatabaseType:  workloads.SAPDatabaseTypeHANA,
						InstanceCount: 1,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_M32ts",
						},
					},
					DeploymentType: "ThreeTier",
				},
				OsSapConfiguration: &workloads.OsSapConfigurationArgs{
					SapFqdn: pulumi.String("xyz.test.com"),
				},
			},
			Environment:            pulumi.String(workloads.SAPEnvironmentTypeProd),
			Location:               pulumi.String("westcentralus"),
			ResourceGroupName:      pulumi.String("test-rg"),
			SapProduct:             pulumi.String(workloads.SAPProductTypeS4HANA),
			SapVirtualInstanceName: pulumi.String("X00"),
			Tags:                   pulumi.StringMap{},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var sapVirtualInstance = new AzureNative.Workloads.SapVirtualInstance("sapVirtualInstance", new()
    {
        Configuration = new AzureNative.Workloads.Inputs.DeploymentWithOSConfigurationArgs
        {
            AppLocation = "eastus",
            ConfigurationType = "DeploymentWithOSConfig",
            InfrastructureConfiguration = new AzureNative.Workloads.Inputs.ThreeTierConfigurationArgs
            {
                AppResourceGroup = "X00-RG",
                ApplicationServer = new AzureNative.Workloads.Inputs.ApplicationServerConfigurationArgs
                {
                    InstanceCount = 6,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_E32ds_v4",
                    },
                },
                CentralServer = new AzureNative.Workloads.Inputs.CentralServerConfigurationArgs
                {
                    InstanceCount = 1,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_E16ds_v4",
                    },
                },
                DatabaseServer = new AzureNative.Workloads.Inputs.DatabaseConfigurationArgs
                {
                    DatabaseType = AzureNative.Workloads.SAPDatabaseType.HANA,
                    InstanceCount = 1,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_M32ts",
                    },
                },
                DeploymentType = "ThreeTier",
            },
            OsSapConfiguration = new AzureNative.Workloads.Inputs.OsSapConfigurationArgs
            {
                SapFqdn = "xyz.test.com",
            },
        },
        Environment = AzureNative.Workloads.SAPEnvironmentType.Prod,
        Location = "westcentralus",
        ResourceGroupName = "test-rg",
        SapProduct = AzureNative.Workloads.SAPProductType.S4HANA,
        SapVirtualInstanceName = "X00",
        Tags = null,
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.workloads.SapVirtualInstance;
import com.pulumi.azurenative.workloads.SapVirtualInstanceArgs;
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 sapVirtualInstance = new SapVirtualInstance("sapVirtualInstance", SapVirtualInstanceArgs.builder()
            .configuration(DeploymentWithOSConfigurationArgs.builder()
                .appLocation("eastus")
                .configurationType("DeploymentWithOSConfig")
                .infrastructureConfiguration(ThreeTierConfigurationArgs.builder()
                    .appResourceGroup("X00-RG")
                    .applicationServer(ApplicationServerConfigurationArgs.builder()
                        .instanceCount(6)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_E32ds_v4")
                            .build())
                        .build())
                    .centralServer(CentralServerConfigurationArgs.builder()
                        .instanceCount(1)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_E16ds_v4")
                            .build())
                        .build())
                    .databaseServer(DatabaseConfigurationArgs.builder()
                        .databaseType("HANA")
                        .instanceCount(1)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_M32ts")
                            .build())
                        .build())
                    .deploymentType("ThreeTier")
                    .build())
                .osSapConfiguration(OsSapConfigurationArgs.builder()
                    .sapFqdn("xyz.test.com")
                    .build())
                .build())
            .environment("Prod")
            .location("westcentralus")
            .resourceGroupName("test-rg")
            .sapProduct("S4HANA")
            .sapVirtualInstanceName("X00")
            .tags(Map.ofEntries(
            ))
            .build());

    }
}
resources:
  sapVirtualInstance:
    type: azure-native:workloads:SapVirtualInstance
    properties:
      configuration:
        appLocation: eastus
        configurationType: DeploymentWithOSConfig
        infrastructureConfiguration:
          appResourceGroup: X00-RG
          applicationServer:
            instanceCount: 6
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_E32ds_v4
          centralServer:
            instanceCount: 1
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_E16ds_v4
          databaseServer:
            databaseType: HANA
            instanceCount: 1
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_M32ts
          deploymentType: ThreeTier
        osSapConfiguration:
          sapFqdn: xyz.test.com
      environment: Prod
      location: westcentralus
      resourceGroupName: test-rg
      sapProduct: S4HANA
      sapVirtualInstanceName: X00
      tags: {}

The configurationType determines whether the resource provisions infrastructure only or includes OS configuration. DeploymentWithOSConfig adds osSapConfiguration for the SAP FQDN and sshKeyPair for authentication. The infrastructureConfiguration defines three server tiers: applicationServer (6 instances), centralServer (1 instance), and databaseServer (1 HANA instance), each with their own subnet placement and VM sizing.

Configure custom disk layouts for SAP HANA database

SAP HANA requires specific disk configurations for data, log, shared, and backup volumes to meet performance and capacity requirements.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const sapVirtualInstance = new azure_native.workloads.SapVirtualInstance("sapVirtualInstance", {
    configuration: {
        appLocation: "eastus",
        configurationType: "DeploymentWithOSConfig",
        infrastructureConfiguration: {
            appResourceGroup: "X00-RG",
            applicationServer: {
                instanceCount: 6,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_E32ds_v4",
                },
            },
            centralServer: {
                instanceCount: 1,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_E16ds_v4",
                },
            },
            databaseServer: {
                databaseType: azure_native.workloads.SAPDatabaseType.HANA,
                diskConfiguration: {
                    diskVolumeConfigurations: {
                        backup: {
                            count: 2,
                            sizeGB: 256,
                            sku: {
                                name: azure_native.workloads.DiskSkuName.StandardSSD_LRS,
                            },
                        },
                        "hana/data": {
                            count: 4,
                            sizeGB: 128,
                            sku: {
                                name: azure_native.workloads.DiskSkuName.Premium_LRS,
                            },
                        },
                        "hana/log": {
                            count: 3,
                            sizeGB: 128,
                            sku: {
                                name: azure_native.workloads.DiskSkuName.Premium_LRS,
                            },
                        },
                        "hana/shared": {
                            count: 1,
                            sizeGB: 256,
                            sku: {
                                name: azure_native.workloads.DiskSkuName.StandardSSD_LRS,
                            },
                        },
                        os: {
                            count: 1,
                            sizeGB: 64,
                            sku: {
                                name: azure_native.workloads.DiskSkuName.StandardSSD_LRS,
                            },
                        },
                        "usr/sap": {
                            count: 1,
                            sizeGB: 128,
                            sku: {
                                name: azure_native.workloads.DiskSkuName.Premium_LRS,
                            },
                        },
                    },
                },
                instanceCount: 1,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_M32ts",
                },
            },
            deploymentType: "ThreeTier",
        },
        osSapConfiguration: {
            sapFqdn: "xyz.test.com",
        },
    },
    environment: azure_native.workloads.SAPEnvironmentType.Prod,
    location: "westcentralus",
    resourceGroupName: "test-rg",
    sapProduct: azure_native.workloads.SAPProductType.S4HANA,
    sapVirtualInstanceName: "X00",
    tags: {},
});
import pulumi
import pulumi_azure_native as azure_native

sap_virtual_instance = azure_native.workloads.SapVirtualInstance("sapVirtualInstance",
    configuration={
        "app_location": "eastus",
        "configuration_type": "DeploymentWithOSConfig",
        "infrastructure_configuration": {
            "app_resource_group": "X00-RG",
            "application_server": {
                "instance_count": 6,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_E32ds_v4",
                },
            },
            "central_server": {
                "instance_count": 1,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_E16ds_v4",
                },
            },
            "database_server": {
                "database_type": azure_native.workloads.SAPDatabaseType.HANA,
                "disk_configuration": {
                    "disk_volume_configurations": {
                        "backup": {
                            "count": 2,
                            "size_gb": 256,
                            "sku": {
                                "name": azure_native.workloads.DiskSkuName.STANDARD_SS_D_LRS,
                            },
                        },
                        "hana/data": {
                            "count": 4,
                            "size_gb": 128,
                            "sku": {
                                "name": azure_native.workloads.DiskSkuName.PREMIUM_LRS,
                            },
                        },
                        "hana/log": {
                            "count": 3,
                            "size_gb": 128,
                            "sku": {
                                "name": azure_native.workloads.DiskSkuName.PREMIUM_LRS,
                            },
                        },
                        "hana/shared": {
                            "count": 1,
                            "size_gb": 256,
                            "sku": {
                                "name": azure_native.workloads.DiskSkuName.STANDARD_SS_D_LRS,
                            },
                        },
                        "os": {
                            "count": 1,
                            "size_gb": 64,
                            "sku": {
                                "name": azure_native.workloads.DiskSkuName.STANDARD_SS_D_LRS,
                            },
                        },
                        "usr/sap": {
                            "count": 1,
                            "size_gb": 128,
                            "sku": {
                                "name": azure_native.workloads.DiskSkuName.PREMIUM_LRS,
                            },
                        },
                    },
                },
                "instance_count": 1,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_M32ts",
                },
            },
            "deployment_type": "ThreeTier",
        },
        "os_sap_configuration": {
            "sap_fqdn": "xyz.test.com",
        },
    },
    environment=azure_native.workloads.SAPEnvironmentType.PROD,
    location="westcentralus",
    resource_group_name="test-rg",
    sap_product=azure_native.workloads.SAPProductType.S4_HANA,
    sap_virtual_instance_name="X00",
    tags={})
package main

import (
	workloads "github.com/pulumi/pulumi-azure-native-sdk/workloads/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := workloads.NewSapVirtualInstance(ctx, "sapVirtualInstance", &workloads.SapVirtualInstanceArgs{
			Configuration: &workloads.DeploymentWithOSConfigurationArgs{
				AppLocation:       pulumi.String("eastus"),
				ConfigurationType: pulumi.String("DeploymentWithOSConfig"),
				InfrastructureConfiguration: workloads.ThreeTierConfiguration{
					AppResourceGroup: "X00-RG",
					ApplicationServer: workloads.ApplicationServerConfiguration{
						InstanceCount: 6,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_E32ds_v4",
						},
					},
					CentralServer: workloads.CentralServerConfiguration{
						InstanceCount: 1,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_E16ds_v4",
						},
					},
					DatabaseServer: workloads.DatabaseConfiguration{
						DatabaseType: workloads.SAPDatabaseTypeHANA,
						DiskConfiguration: workloads.DiskConfiguration{
							DiskVolumeConfigurations: map[string]workloads.DiskVolumeConfiguration{
								"backup": workloads.DiskVolumeConfiguration{
									Count:  2,
									SizeGB: 256,
									Sku: workloads.DiskSku{
										Name: workloads.DiskSkuName_StandardSSD_LRS,
									},
								},
								"hana/data": workloads.DiskVolumeConfiguration{
									Count:  4,
									SizeGB: 128,
									Sku: workloads.DiskSku{
										Name: workloads.DiskSkuName_Premium_LRS,
									},
								},
								"hana/log": workloads.DiskVolumeConfiguration{
									Count:  3,
									SizeGB: 128,
									Sku: workloads.DiskSku{
										Name: workloads.DiskSkuName_Premium_LRS,
									},
								},
								"hana/shared": workloads.DiskVolumeConfiguration{
									Count:  1,
									SizeGB: 256,
									Sku: workloads.DiskSku{
										Name: workloads.DiskSkuName_StandardSSD_LRS,
									},
								},
								"os": workloads.DiskVolumeConfiguration{
									Count:  1,
									SizeGB: 64,
									Sku: workloads.DiskSku{
										Name: workloads.DiskSkuName_StandardSSD_LRS,
									},
								},
								"usr/sap": workloads.DiskVolumeConfiguration{
									Count:  1,
									SizeGB: 128,
									Sku: workloads.DiskSku{
										Name: workloads.DiskSkuName_Premium_LRS,
									},
								},
							},
						},
						InstanceCount: 1,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_M32ts",
						},
					},
					DeploymentType: "ThreeTier",
				},
				OsSapConfiguration: &workloads.OsSapConfigurationArgs{
					SapFqdn: pulumi.String("xyz.test.com"),
				},
			},
			Environment:            pulumi.String(workloads.SAPEnvironmentTypeProd),
			Location:               pulumi.String("westcentralus"),
			ResourceGroupName:      pulumi.String("test-rg"),
			SapProduct:             pulumi.String(workloads.SAPProductTypeS4HANA),
			SapVirtualInstanceName: pulumi.String("X00"),
			Tags:                   pulumi.StringMap{},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var sapVirtualInstance = new AzureNative.Workloads.SapVirtualInstance("sapVirtualInstance", new()
    {
        Configuration = new AzureNative.Workloads.Inputs.DeploymentWithOSConfigurationArgs
        {
            AppLocation = "eastus",
            ConfigurationType = "DeploymentWithOSConfig",
            InfrastructureConfiguration = new AzureNative.Workloads.Inputs.ThreeTierConfigurationArgs
            {
                AppResourceGroup = "X00-RG",
                ApplicationServer = new AzureNative.Workloads.Inputs.ApplicationServerConfigurationArgs
                {
                    InstanceCount = 6,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_E32ds_v4",
                    },
                },
                CentralServer = new AzureNative.Workloads.Inputs.CentralServerConfigurationArgs
                {
                    InstanceCount = 1,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_E16ds_v4",
                    },
                },
                DatabaseServer = new AzureNative.Workloads.Inputs.DatabaseConfigurationArgs
                {
                    DatabaseType = AzureNative.Workloads.SAPDatabaseType.HANA,
                    DiskConfiguration = new AzureNative.Workloads.Inputs.DiskConfigurationArgs
                    {
                        DiskVolumeConfigurations = 
                        {
                            { "backup", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                            {
                                Count = 2,
                                SizeGB = 256,
                                Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                                {
                                    Name = AzureNative.Workloads.DiskSkuName.StandardSSD_LRS,
                                },
                            } },
                            { "hana/data", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                            {
                                Count = 4,
                                SizeGB = 128,
                                Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                                {
                                    Name = AzureNative.Workloads.DiskSkuName.Premium_LRS,
                                },
                            } },
                            { "hana/log", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                            {
                                Count = 3,
                                SizeGB = 128,
                                Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                                {
                                    Name = AzureNative.Workloads.DiskSkuName.Premium_LRS,
                                },
                            } },
                            { "hana/shared", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                            {
                                Count = 1,
                                SizeGB = 256,
                                Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                                {
                                    Name = AzureNative.Workloads.DiskSkuName.StandardSSD_LRS,
                                },
                            } },
                            { "os", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                            {
                                Count = 1,
                                SizeGB = 64,
                                Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                                {
                                    Name = AzureNative.Workloads.DiskSkuName.StandardSSD_LRS,
                                },
                            } },
                            { "usr/sap", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                            {
                                Count = 1,
                                SizeGB = 128,
                                Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                                {
                                    Name = AzureNative.Workloads.DiskSkuName.Premium_LRS,
                                },
                            } },
                        },
                    },
                    InstanceCount = 1,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_M32ts",
                    },
                },
                DeploymentType = "ThreeTier",
            },
            OsSapConfiguration = new AzureNative.Workloads.Inputs.OsSapConfigurationArgs
            {
                SapFqdn = "xyz.test.com",
            },
        },
        Environment = AzureNative.Workloads.SAPEnvironmentType.Prod,
        Location = "westcentralus",
        ResourceGroupName = "test-rg",
        SapProduct = AzureNative.Workloads.SAPProductType.S4HANA,
        SapVirtualInstanceName = "X00",
        Tags = null,
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.workloads.SapVirtualInstance;
import com.pulumi.azurenative.workloads.SapVirtualInstanceArgs;
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 sapVirtualInstance = new SapVirtualInstance("sapVirtualInstance", SapVirtualInstanceArgs.builder()
            .configuration(DeploymentWithOSConfigurationArgs.builder()
                .appLocation("eastus")
                .configurationType("DeploymentWithOSConfig")
                .infrastructureConfiguration(ThreeTierConfigurationArgs.builder()
                    .appResourceGroup("X00-RG")
                    .applicationServer(ApplicationServerConfigurationArgs.builder()
                        .instanceCount(6)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_E32ds_v4")
                            .build())
                        .build())
                    .centralServer(CentralServerConfigurationArgs.builder()
                        .instanceCount(1)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_E16ds_v4")
                            .build())
                        .build())
                    .databaseServer(DatabaseConfigurationArgs.builder()
                        .databaseType("HANA")
                        .diskConfiguration(DiskConfigurationArgs.builder()
                            .diskVolumeConfigurations(Map.ofEntries(
                                Map.entry("backup", DiskVolumeConfigurationArgs.builder()
                                    .count(2)
                                    .sizeGB(256)
                                    .sku(DiskSkuArgs.builder()
                                        .name("StandardSSD_LRS")
                                        .build())
                                    .build()),
                                Map.entry("hana/data", DiskVolumeConfigurationArgs.builder()
                                    .count(4)
                                    .sizeGB(128)
                                    .sku(DiskSkuArgs.builder()
                                        .name("Premium_LRS")
                                        .build())
                                    .build()),
                                Map.entry("hana/log", DiskVolumeConfigurationArgs.builder()
                                    .count(3)
                                    .sizeGB(128)
                                    .sku(DiskSkuArgs.builder()
                                        .name("Premium_LRS")
                                        .build())
                                    .build()),
                                Map.entry("hana/shared", DiskVolumeConfigurationArgs.builder()
                                    .count(1)
                                    .sizeGB(256)
                                    .sku(DiskSkuArgs.builder()
                                        .name("StandardSSD_LRS")
                                        .build())
                                    .build()),
                                Map.entry("os", DiskVolumeConfigurationArgs.builder()
                                    .count(1)
                                    .sizeGB(64)
                                    .sku(DiskSkuArgs.builder()
                                        .name("StandardSSD_LRS")
                                        .build())
                                    .build()),
                                Map.entry("usr/sap", DiskVolumeConfigurationArgs.builder()
                                    .count(1)
                                    .sizeGB(128)
                                    .sku(DiskSkuArgs.builder()
                                        .name("Premium_LRS")
                                        .build())
                                    .build())
                            ))
                            .build())
                        .instanceCount(1)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_M32ts")
                            .build())
                        .build())
                    .deploymentType("ThreeTier")
                    .build())
                .osSapConfiguration(OsSapConfigurationArgs.builder()
                    .sapFqdn("xyz.test.com")
                    .build())
                .build())
            .environment("Prod")
            .location("westcentralus")
            .resourceGroupName("test-rg")
            .sapProduct("S4HANA")
            .sapVirtualInstanceName("X00")
            .tags(Map.ofEntries(
            ))
            .build());

    }
}
resources:
  sapVirtualInstance:
    type: azure-native:workloads:SapVirtualInstance
    properties:
      configuration:
        appLocation: eastus
        configurationType: DeploymentWithOSConfig
        infrastructureConfiguration:
          appResourceGroup: X00-RG
          applicationServer:
            instanceCount: 6
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_E32ds_v4
          centralServer:
            instanceCount: 1
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_E16ds_v4
          databaseServer:
            databaseType: HANA
            diskConfiguration:
              diskVolumeConfigurations:
                backup:
                  count: 2
                  sizeGB: 256
                  sku:
                    name: StandardSSD_LRS
                hana/data:
                  count: 4
                  sizeGB: 128
                  sku:
                    name: Premium_LRS
                hana/log:
                  count: 3
                  sizeGB: 128
                  sku:
                    name: Premium_LRS
                hana/shared:
                  count: 1
                  sizeGB: 256
                  sku:
                    name: StandardSSD_LRS
                os:
                  count: 1
                  sizeGB: 64
                  sku:
                    name: StandardSSD_LRS
                usr/sap:
                  count: 1
                  sizeGB: 128
                  sku:
                    name: Premium_LRS
            instanceCount: 1
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_M32ts
          deploymentType: ThreeTier
        osSapConfiguration:
          sapFqdn: xyz.test.com
      environment: Prod
      location: westcentralus
      resourceGroupName: test-rg
      sapProduct: S4HANA
      sapVirtualInstanceName: X00
      tags: {}

The diskConfiguration property defines diskVolumeConfigurations for each mount point. HANA data and log volumes use Premium_LRS for performance, while backup and shared volumes use StandardSSD_LRS for cost efficiency. Each volume specifies count (number of disks), sizeGB (capacity), and sku (storage tier). This configuration extends the basic three-tier deployment by adding explicit disk layout control.

Enable high availability with Availability Sets

Production SAP systems require high availability to minimize downtime. Availability Sets distribute VMs across fault domains and update domains within a single datacenter.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const sapVirtualInstance = new azure_native.workloads.SapVirtualInstance("sapVirtualInstance", {
    configuration: {
        appLocation: "eastus",
        configurationType: "DeploymentWithOSConfig",
        infrastructureConfiguration: {
            appResourceGroup: "X00-RG",
            applicationServer: {
                instanceCount: 6,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_E32ds_v4",
                },
            },
            centralServer: {
                instanceCount: 2,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_E16ds_v4",
                },
            },
            databaseServer: {
                databaseType: azure_native.workloads.SAPDatabaseType.HANA,
                instanceCount: 2,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_M32ts",
                },
            },
            deploymentType: "ThreeTier",
            highAvailabilityConfig: {
                highAvailabilityType: azure_native.workloads.SAPHighAvailabilityType.AvailabilitySet,
            },
        },
        osSapConfiguration: {
            sapFqdn: "xyz.test.com",
        },
    },
    environment: azure_native.workloads.SAPEnvironmentType.Prod,
    location: "westcentralus",
    resourceGroupName: "test-rg",
    sapProduct: azure_native.workloads.SAPProductType.S4HANA,
    sapVirtualInstanceName: "X00",
    tags: {},
});
import pulumi
import pulumi_azure_native as azure_native

sap_virtual_instance = azure_native.workloads.SapVirtualInstance("sapVirtualInstance",
    configuration={
        "app_location": "eastus",
        "configuration_type": "DeploymentWithOSConfig",
        "infrastructure_configuration": {
            "app_resource_group": "X00-RG",
            "application_server": {
                "instance_count": 6,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_E32ds_v4",
                },
            },
            "central_server": {
                "instance_count": 2,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_E16ds_v4",
                },
            },
            "database_server": {
                "database_type": azure_native.workloads.SAPDatabaseType.HANA,
                "instance_count": 2,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_M32ts",
                },
            },
            "deployment_type": "ThreeTier",
            "high_availability_config": {
                "high_availability_type": azure_native.workloads.SAPHighAvailabilityType.AVAILABILITY_SET,
            },
        },
        "os_sap_configuration": {
            "sap_fqdn": "xyz.test.com",
        },
    },
    environment=azure_native.workloads.SAPEnvironmentType.PROD,
    location="westcentralus",
    resource_group_name="test-rg",
    sap_product=azure_native.workloads.SAPProductType.S4_HANA,
    sap_virtual_instance_name="X00",
    tags={})
package main

import (
	workloads "github.com/pulumi/pulumi-azure-native-sdk/workloads/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := workloads.NewSapVirtualInstance(ctx, "sapVirtualInstance", &workloads.SapVirtualInstanceArgs{
			Configuration: &workloads.DeploymentWithOSConfigurationArgs{
				AppLocation:       pulumi.String("eastus"),
				ConfigurationType: pulumi.String("DeploymentWithOSConfig"),
				InfrastructureConfiguration: workloads.ThreeTierConfiguration{
					AppResourceGroup: "X00-RG",
					ApplicationServer: workloads.ApplicationServerConfiguration{
						InstanceCount: 6,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_E32ds_v4",
						},
					},
					CentralServer: workloads.CentralServerConfiguration{
						InstanceCount: 2,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_E16ds_v4",
						},
					},
					DatabaseServer: workloads.DatabaseConfiguration{
						DatabaseType:  workloads.SAPDatabaseTypeHANA,
						InstanceCount: 2,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_M32ts",
						},
					},
					DeploymentType: "ThreeTier",
					HighAvailabilityConfig: workloads.HighAvailabilityConfiguration{
						HighAvailabilityType: workloads.SAPHighAvailabilityTypeAvailabilitySet,
					},
				},
				OsSapConfiguration: &workloads.OsSapConfigurationArgs{
					SapFqdn: pulumi.String("xyz.test.com"),
				},
			},
			Environment:            pulumi.String(workloads.SAPEnvironmentTypeProd),
			Location:               pulumi.String("westcentralus"),
			ResourceGroupName:      pulumi.String("test-rg"),
			SapProduct:             pulumi.String(workloads.SAPProductTypeS4HANA),
			SapVirtualInstanceName: pulumi.String("X00"),
			Tags:                   pulumi.StringMap{},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var sapVirtualInstance = new AzureNative.Workloads.SapVirtualInstance("sapVirtualInstance", new()
    {
        Configuration = new AzureNative.Workloads.Inputs.DeploymentWithOSConfigurationArgs
        {
            AppLocation = "eastus",
            ConfigurationType = "DeploymentWithOSConfig",
            InfrastructureConfiguration = new AzureNative.Workloads.Inputs.ThreeTierConfigurationArgs
            {
                AppResourceGroup = "X00-RG",
                ApplicationServer = new AzureNative.Workloads.Inputs.ApplicationServerConfigurationArgs
                {
                    InstanceCount = 6,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_E32ds_v4",
                    },
                },
                CentralServer = new AzureNative.Workloads.Inputs.CentralServerConfigurationArgs
                {
                    InstanceCount = 2,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_E16ds_v4",
                    },
                },
                DatabaseServer = new AzureNative.Workloads.Inputs.DatabaseConfigurationArgs
                {
                    DatabaseType = AzureNative.Workloads.SAPDatabaseType.HANA,
                    InstanceCount = 2,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_M32ts",
                    },
                },
                DeploymentType = "ThreeTier",
                HighAvailabilityConfig = new AzureNative.Workloads.Inputs.HighAvailabilityConfigurationArgs
                {
                    HighAvailabilityType = AzureNative.Workloads.SAPHighAvailabilityType.AvailabilitySet,
                },
            },
            OsSapConfiguration = new AzureNative.Workloads.Inputs.OsSapConfigurationArgs
            {
                SapFqdn = "xyz.test.com",
            },
        },
        Environment = AzureNative.Workloads.SAPEnvironmentType.Prod,
        Location = "westcentralus",
        ResourceGroupName = "test-rg",
        SapProduct = AzureNative.Workloads.SAPProductType.S4HANA,
        SapVirtualInstanceName = "X00",
        Tags = null,
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.workloads.SapVirtualInstance;
import com.pulumi.azurenative.workloads.SapVirtualInstanceArgs;
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 sapVirtualInstance = new SapVirtualInstance("sapVirtualInstance", SapVirtualInstanceArgs.builder()
            .configuration(DeploymentWithOSConfigurationArgs.builder()
                .appLocation("eastus")
                .configurationType("DeploymentWithOSConfig")
                .infrastructureConfiguration(ThreeTierConfigurationArgs.builder()
                    .appResourceGroup("X00-RG")
                    .applicationServer(ApplicationServerConfigurationArgs.builder()
                        .instanceCount(6)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_E32ds_v4")
                            .build())
                        .build())
                    .centralServer(CentralServerConfigurationArgs.builder()
                        .instanceCount(2)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_E16ds_v4")
                            .build())
                        .build())
                    .databaseServer(DatabaseConfigurationArgs.builder()
                        .databaseType("HANA")
                        .instanceCount(2)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_M32ts")
                            .build())
                        .build())
                    .deploymentType("ThreeTier")
                    .highAvailabilityConfig(HighAvailabilityConfigurationArgs.builder()
                        .highAvailabilityType("AvailabilitySet")
                        .build())
                    .build())
                .osSapConfiguration(OsSapConfigurationArgs.builder()
                    .sapFqdn("xyz.test.com")
                    .build())
                .build())
            .environment("Prod")
            .location("westcentralus")
            .resourceGroupName("test-rg")
            .sapProduct("S4HANA")
            .sapVirtualInstanceName("X00")
            .tags(Map.ofEntries(
            ))
            .build());

    }
}
resources:
  sapVirtualInstance:
    type: azure-native:workloads:SapVirtualInstance
    properties:
      configuration:
        appLocation: eastus
        configurationType: DeploymentWithOSConfig
        infrastructureConfiguration:
          appResourceGroup: X00-RG
          applicationServer:
            instanceCount: 6
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_E32ds_v4
          centralServer:
            instanceCount: 2
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_E16ds_v4
          databaseServer:
            databaseType: HANA
            instanceCount: 2
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_M32ts
          deploymentType: ThreeTier
          highAvailabilityConfig:
            highAvailabilityType: AvailabilitySet
        osSapConfiguration:
          sapFqdn: xyz.test.com
      environment: Prod
      location: westcentralus
      resourceGroupName: test-rg
      sapProduct: S4HANA
      sapVirtualInstanceName: X00
      tags: {}

The highAvailabilityConfig property sets highAvailabilityType to AvailabilitySet. This causes Azure to distribute the central server (instanceCount: 2) and database server (instanceCount: 2) VMs across fault domains, protecting against hardware failures within a datacenter. Application servers can also be distributed for additional resilience.

Enable high availability with Availability Zones

Availability Zones provide higher SLA guarantees by distributing VMs across physically separate datacenters within a region.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const sapVirtualInstance = new azure_native.workloads.SapVirtualInstance("sapVirtualInstance", {
    configuration: {
        appLocation: "eastus",
        configurationType: "DeploymentWithOSConfig",
        infrastructureConfiguration: {
            appResourceGroup: "X00-RG",
            applicationServer: {
                instanceCount: 6,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_E32ds_v4",
                },
            },
            centralServer: {
                instanceCount: 2,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_E16ds_v4",
                },
            },
            databaseServer: {
                databaseType: azure_native.workloads.SAPDatabaseType.HANA,
                instanceCount: 2,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_M32ts",
                },
            },
            deploymentType: "ThreeTier",
            highAvailabilityConfig: {
                highAvailabilityType: azure_native.workloads.SAPHighAvailabilityType.AvailabilityZone,
            },
        },
        osSapConfiguration: {
            sapFqdn: "xyz.test.com",
        },
    },
    environment: azure_native.workloads.SAPEnvironmentType.Prod,
    location: "westcentralus",
    resourceGroupName: "test-rg",
    sapProduct: azure_native.workloads.SAPProductType.S4HANA,
    sapVirtualInstanceName: "X00",
    tags: {},
});
import pulumi
import pulumi_azure_native as azure_native

sap_virtual_instance = azure_native.workloads.SapVirtualInstance("sapVirtualInstance",
    configuration={
        "app_location": "eastus",
        "configuration_type": "DeploymentWithOSConfig",
        "infrastructure_configuration": {
            "app_resource_group": "X00-RG",
            "application_server": {
                "instance_count": 6,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_E32ds_v4",
                },
            },
            "central_server": {
                "instance_count": 2,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_E16ds_v4",
                },
            },
            "database_server": {
                "database_type": azure_native.workloads.SAPDatabaseType.HANA,
                "instance_count": 2,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_M32ts",
                },
            },
            "deployment_type": "ThreeTier",
            "high_availability_config": {
                "high_availability_type": azure_native.workloads.SAPHighAvailabilityType.AVAILABILITY_ZONE,
            },
        },
        "os_sap_configuration": {
            "sap_fqdn": "xyz.test.com",
        },
    },
    environment=azure_native.workloads.SAPEnvironmentType.PROD,
    location="westcentralus",
    resource_group_name="test-rg",
    sap_product=azure_native.workloads.SAPProductType.S4_HANA,
    sap_virtual_instance_name="X00",
    tags={})
package main

import (
	workloads "github.com/pulumi/pulumi-azure-native-sdk/workloads/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := workloads.NewSapVirtualInstance(ctx, "sapVirtualInstance", &workloads.SapVirtualInstanceArgs{
			Configuration: &workloads.DeploymentWithOSConfigurationArgs{
				AppLocation:       pulumi.String("eastus"),
				ConfigurationType: pulumi.String("DeploymentWithOSConfig"),
				InfrastructureConfiguration: workloads.ThreeTierConfiguration{
					AppResourceGroup: "X00-RG",
					ApplicationServer: workloads.ApplicationServerConfiguration{
						InstanceCount: 6,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_E32ds_v4",
						},
					},
					CentralServer: workloads.CentralServerConfiguration{
						InstanceCount: 2,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_E16ds_v4",
						},
					},
					DatabaseServer: workloads.DatabaseConfiguration{
						DatabaseType:  workloads.SAPDatabaseTypeHANA,
						InstanceCount: 2,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_M32ts",
						},
					},
					DeploymentType: "ThreeTier",
					HighAvailabilityConfig: workloads.HighAvailabilityConfiguration{
						HighAvailabilityType: workloads.SAPHighAvailabilityTypeAvailabilityZone,
					},
				},
				OsSapConfiguration: &workloads.OsSapConfigurationArgs{
					SapFqdn: pulumi.String("xyz.test.com"),
				},
			},
			Environment:            pulumi.String(workloads.SAPEnvironmentTypeProd),
			Location:               pulumi.String("westcentralus"),
			ResourceGroupName:      pulumi.String("test-rg"),
			SapProduct:             pulumi.String(workloads.SAPProductTypeS4HANA),
			SapVirtualInstanceName: pulumi.String("X00"),
			Tags:                   pulumi.StringMap{},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var sapVirtualInstance = new AzureNative.Workloads.SapVirtualInstance("sapVirtualInstance", new()
    {
        Configuration = new AzureNative.Workloads.Inputs.DeploymentWithOSConfigurationArgs
        {
            AppLocation = "eastus",
            ConfigurationType = "DeploymentWithOSConfig",
            InfrastructureConfiguration = new AzureNative.Workloads.Inputs.ThreeTierConfigurationArgs
            {
                AppResourceGroup = "X00-RG",
                ApplicationServer = new AzureNative.Workloads.Inputs.ApplicationServerConfigurationArgs
                {
                    InstanceCount = 6,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_E32ds_v4",
                    },
                },
                CentralServer = new AzureNative.Workloads.Inputs.CentralServerConfigurationArgs
                {
                    InstanceCount = 2,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_E16ds_v4",
                    },
                },
                DatabaseServer = new AzureNative.Workloads.Inputs.DatabaseConfigurationArgs
                {
                    DatabaseType = AzureNative.Workloads.SAPDatabaseType.HANA,
                    InstanceCount = 2,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_M32ts",
                    },
                },
                DeploymentType = "ThreeTier",
                HighAvailabilityConfig = new AzureNative.Workloads.Inputs.HighAvailabilityConfigurationArgs
                {
                    HighAvailabilityType = AzureNative.Workloads.SAPHighAvailabilityType.AvailabilityZone,
                },
            },
            OsSapConfiguration = new AzureNative.Workloads.Inputs.OsSapConfigurationArgs
            {
                SapFqdn = "xyz.test.com",
            },
        },
        Environment = AzureNative.Workloads.SAPEnvironmentType.Prod,
        Location = "westcentralus",
        ResourceGroupName = "test-rg",
        SapProduct = AzureNative.Workloads.SAPProductType.S4HANA,
        SapVirtualInstanceName = "X00",
        Tags = null,
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.workloads.SapVirtualInstance;
import com.pulumi.azurenative.workloads.SapVirtualInstanceArgs;
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 sapVirtualInstance = new SapVirtualInstance("sapVirtualInstance", SapVirtualInstanceArgs.builder()
            .configuration(DeploymentWithOSConfigurationArgs.builder()
                .appLocation("eastus")
                .configurationType("DeploymentWithOSConfig")
                .infrastructureConfiguration(ThreeTierConfigurationArgs.builder()
                    .appResourceGroup("X00-RG")
                    .applicationServer(ApplicationServerConfigurationArgs.builder()
                        .instanceCount(6)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_E32ds_v4")
                            .build())
                        .build())
                    .centralServer(CentralServerConfigurationArgs.builder()
                        .instanceCount(2)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_E16ds_v4")
                            .build())
                        .build())
                    .databaseServer(DatabaseConfigurationArgs.builder()
                        .databaseType("HANA")
                        .instanceCount(2)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_M32ts")
                            .build())
                        .build())
                    .deploymentType("ThreeTier")
                    .highAvailabilityConfig(HighAvailabilityConfigurationArgs.builder()
                        .highAvailabilityType("AvailabilityZone")
                        .build())
                    .build())
                .osSapConfiguration(OsSapConfigurationArgs.builder()
                    .sapFqdn("xyz.test.com")
                    .build())
                .build())
            .environment("Prod")
            .location("westcentralus")
            .resourceGroupName("test-rg")
            .sapProduct("S4HANA")
            .sapVirtualInstanceName("X00")
            .tags(Map.ofEntries(
            ))
            .build());

    }
}
resources:
  sapVirtualInstance:
    type: azure-native:workloads:SapVirtualInstance
    properties:
      configuration:
        appLocation: eastus
        configurationType: DeploymentWithOSConfig
        infrastructureConfiguration:
          appResourceGroup: X00-RG
          applicationServer:
            instanceCount: 6
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_E32ds_v4
          centralServer:
            instanceCount: 2
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_E16ds_v4
          databaseServer:
            databaseType: HANA
            instanceCount: 2
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_M32ts
          deploymentType: ThreeTier
          highAvailabilityConfig:
            highAvailabilityType: AvailabilityZone
        osSapConfiguration:
          sapFqdn: xyz.test.com
      environment: Prod
      location: westcentralus
      resourceGroupName: test-rg
      sapProduct: S4HANA
      sapVirtualInstanceName: X00
      tags: {}

Setting highAvailabilityType to AvailabilityZone distributes VMs across zones instead of fault domains within a single datacenter. This offers better protection against datacenter-level failures but requires a region that supports Availability Zones. The configuration is otherwise identical to Availability Sets, making it easy to switch between HA strategies.

Specify custom names for Azure resources

Organizations often have naming conventions for Azure resources to support governance, cost tracking, and operational management.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const sapVirtualInstance = new azure_native.workloads.SapVirtualInstance("sapVirtualInstance", {
    configuration: {
        appLocation: "eastus",
        configurationType: "DeploymentWithOSConfig",
        infrastructureConfiguration: {
            appResourceGroup: "X00-RG",
            applicationServer: {
                instanceCount: 6,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_E32ds_v4",
                },
            },
            centralServer: {
                instanceCount: 1,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_E16ds_v4",
                },
            },
            customResourceNames: {
                applicationServer: {
                    availabilitySetName: "appAvSet",
                    virtualMachines: [
                        {
                            dataDiskNames: {
                                "default": ["app0disk0"],
                            },
                            hostName: "apphostName0",
                            networkInterfaces: [{
                                networkInterfaceName: "appnic0",
                            }],
                            osDiskName: "app0osdisk",
                            vmName: "appvm0",
                        },
                        {
                            dataDiskNames: {
                                "default": ["app1disk0"],
                            },
                            hostName: "apphostName1",
                            networkInterfaces: [{
                                networkInterfaceName: "appnic1",
                            }],
                            osDiskName: "app1osdisk",
                            vmName: "appvm1",
                        },
                    ],
                },
                centralServer: {
                    virtualMachines: [{
                        dataDiskNames: {
                            "default": ["ascsdisk0"],
                        },
                        hostName: "ascshostName",
                        networkInterfaces: [{
                            networkInterfaceName: "ascsnic",
                        }],
                        osDiskName: "ascsosdisk",
                        vmName: "ascsvm",
                    }],
                },
                databaseServer: {
                    virtualMachines: [{
                        dataDiskNames: {
                            hanaData: [
                                "hanadata0",
                                "hanadata1",
                            ],
                            hanaLog: [
                                "hanalog0",
                                "hanalog1",
                                "hanalog2",
                            ],
                            hanaShared: [
                                "hanashared0",
                                "hanashared1",
                            ],
                            usrSap: ["usrsap0"],
                        },
                        hostName: "dbhostName",
                        networkInterfaces: [{
                            networkInterfaceName: "dbnic",
                        }],
                        osDiskName: "dbosdisk",
                        vmName: "dbvm",
                    }],
                },
                namingPatternType: "FullResourceName",
                sharedStorage: {
                    sharedStorageAccountName: "storageacc",
                    sharedStorageAccountPrivateEndPointName: "peForxNFS",
                },
            },
            databaseServer: {
                databaseType: azure_native.workloads.SAPDatabaseType.HANA,
                instanceCount: 1,
                subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                virtualMachineConfiguration: {
                    imageReference: {
                        offer: "RHEL-SAP",
                        publisher: "RedHat",
                        sku: "84sapha-gen2",
                        version: "latest",
                    },
                    osProfile: {
                        adminUsername: "{your-username}",
                        osConfiguration: {
                            disablePasswordAuthentication: true,
                            osType: "Linux",
                            sshKeyPair: {
                                privateKey: "xyz",
                                publicKey: "abc",
                            },
                        },
                    },
                    vmSize: "Standard_M32ts",
                },
            },
            deploymentType: "ThreeTier",
        },
        osSapConfiguration: {
            sapFqdn: "xyz.test.com",
        },
    },
    environment: azure_native.workloads.SAPEnvironmentType.Prod,
    location: "westcentralus",
    resourceGroupName: "test-rg",
    sapProduct: azure_native.workloads.SAPProductType.S4HANA,
    sapVirtualInstanceName: "X00",
    tags: {},
});
import pulumi
import pulumi_azure_native as azure_native

sap_virtual_instance = azure_native.workloads.SapVirtualInstance("sapVirtualInstance",
    configuration={
        "app_location": "eastus",
        "configuration_type": "DeploymentWithOSConfig",
        "infrastructure_configuration": {
            "app_resource_group": "X00-RG",
            "application_server": {
                "instance_count": 6,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_E32ds_v4",
                },
            },
            "central_server": {
                "instance_count": 1,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_E16ds_v4",
                },
            },
            "custom_resource_names": {
                "application_server": {
                    "availability_set_name": "appAvSet",
                    "virtual_machines": [
                        {
                            "data_disk_names": {
                                "default": ["app0disk0"],
                            },
                            "host_name": "apphostName0",
                            "network_interfaces": [{
                                "network_interface_name": "appnic0",
                            }],
                            "os_disk_name": "app0osdisk",
                            "vm_name": "appvm0",
                        },
                        {
                            "data_disk_names": {
                                "default": ["app1disk0"],
                            },
                            "host_name": "apphostName1",
                            "network_interfaces": [{
                                "network_interface_name": "appnic1",
                            }],
                            "os_disk_name": "app1osdisk",
                            "vm_name": "appvm1",
                        },
                    ],
                },
                "central_server": {
                    "virtual_machines": [{
                        "data_disk_names": {
                            "default": ["ascsdisk0"],
                        },
                        "host_name": "ascshostName",
                        "network_interfaces": [{
                            "network_interface_name": "ascsnic",
                        }],
                        "os_disk_name": "ascsosdisk",
                        "vm_name": "ascsvm",
                    }],
                },
                "database_server": {
                    "virtual_machines": [{
                        "data_disk_names": {
                            "hanaData": [
                                "hanadata0",
                                "hanadata1",
                            ],
                            "hanaLog": [
                                "hanalog0",
                                "hanalog1",
                                "hanalog2",
                            ],
                            "hanaShared": [
                                "hanashared0",
                                "hanashared1",
                            ],
                            "usrSap": ["usrsap0"],
                        },
                        "host_name": "dbhostName",
                        "network_interfaces": [{
                            "network_interface_name": "dbnic",
                        }],
                        "os_disk_name": "dbosdisk",
                        "vm_name": "dbvm",
                    }],
                },
                "naming_pattern_type": "FullResourceName",
                "shared_storage": {
                    "shared_storage_account_name": "storageacc",
                    "shared_storage_account_private_end_point_name": "peForxNFS",
                },
            },
            "database_server": {
                "database_type": azure_native.workloads.SAPDatabaseType.HANA,
                "instance_count": 1,
                "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                "virtual_machine_configuration": {
                    "image_reference": {
                        "offer": "RHEL-SAP",
                        "publisher": "RedHat",
                        "sku": "84sapha-gen2",
                        "version": "latest",
                    },
                    "os_profile": {
                        "admin_username": "{your-username}",
                        "os_configuration": {
                            "disable_password_authentication": True,
                            "os_type": "Linux",
                            "ssh_key_pair": {
                                "private_key": "xyz",
                                "public_key": "abc",
                            },
                        },
                    },
                    "vm_size": "Standard_M32ts",
                },
            },
            "deployment_type": "ThreeTier",
        },
        "os_sap_configuration": {
            "sap_fqdn": "xyz.test.com",
        },
    },
    environment=azure_native.workloads.SAPEnvironmentType.PROD,
    location="westcentralus",
    resource_group_name="test-rg",
    sap_product=azure_native.workloads.SAPProductType.S4_HANA,
    sap_virtual_instance_name="X00",
    tags={})
package main

import (
	workloads "github.com/pulumi/pulumi-azure-native-sdk/workloads/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := workloads.NewSapVirtualInstance(ctx, "sapVirtualInstance", &workloads.SapVirtualInstanceArgs{
			Configuration: &workloads.DeploymentWithOSConfigurationArgs{
				AppLocation:       pulumi.String("eastus"),
				ConfigurationType: pulumi.String("DeploymentWithOSConfig"),
				InfrastructureConfiguration: workloads.ThreeTierConfiguration{
					AppResourceGroup: "X00-RG",
					ApplicationServer: workloads.ApplicationServerConfiguration{
						InstanceCount: 6,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_E32ds_v4",
						},
					},
					CentralServer: workloads.CentralServerConfiguration{
						InstanceCount: 1,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_E16ds_v4",
						},
					},
					CustomResourceNames: workloads.ThreeTierFullResourceNames{
						ApplicationServer: workloads.ApplicationServerFullResourceNames{
							AvailabilitySetName: "appAvSet",
							VirtualMachines: []workloads.VirtualMachineResourceNames{
								{
									DataDiskNames: {
										"default": []string{
											"app0disk0",
										},
									},
									HostName: "apphostName0",
									NetworkInterfaces: []workloads.NetworkInterfaceResourceNames{
										{
											NetworkInterfaceName: "appnic0",
										},
									},
									OsDiskName: "app0osdisk",
									VmName:     "appvm0",
								},
								{
									DataDiskNames: {
										"default": []string{
											"app1disk0",
										},
									},
									HostName: "apphostName1",
									NetworkInterfaces: []workloads.NetworkInterfaceResourceNames{
										{
											NetworkInterfaceName: "appnic1",
										},
									},
									OsDiskName: "app1osdisk",
									VmName:     "appvm1",
								},
							},
						},
						CentralServer: workloads.CentralServerFullResourceNames{
							VirtualMachines: []workloads.VirtualMachineResourceNames{
								{
									DataDiskNames: {
										"default": []string{
											"ascsdisk0",
										},
									},
									HostName: "ascshostName",
									NetworkInterfaces: []workloads.NetworkInterfaceResourceNames{
										{
											NetworkInterfaceName: "ascsnic",
										},
									},
									OsDiskName: "ascsosdisk",
									VmName:     "ascsvm",
								},
							},
						},
						DatabaseServer: workloads.DatabaseServerFullResourceNames{
							VirtualMachines: []workloads.VirtualMachineResourceNames{
								{
									DataDiskNames: {
										"hanaData": []string{
											"hanadata0",
											"hanadata1",
										},
										"hanaLog": []string{
											"hanalog0",
											"hanalog1",
											"hanalog2",
										},
										"hanaShared": []string{
											"hanashared0",
											"hanashared1",
										},
										"usrSap": []string{
											"usrsap0",
										},
									},
									HostName: "dbhostName",
									NetworkInterfaces: []workloads.NetworkInterfaceResourceNames{
										{
											NetworkInterfaceName: "dbnic",
										},
									},
									OsDiskName: "dbosdisk",
									VmName:     "dbvm",
								},
							},
						},
						NamingPatternType: "FullResourceName",
						SharedStorage: workloads.SharedStorageResourceNames{
							SharedStorageAccountName:                "storageacc",
							SharedStorageAccountPrivateEndPointName: "peForxNFS",
						},
					},
					DatabaseServer: workloads.DatabaseConfiguration{
						DatabaseType:  workloads.SAPDatabaseTypeHANA,
						InstanceCount: 1,
						SubnetId:      "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
						VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
							ImageReference: workloads.ImageReference{
								Offer:     "RHEL-SAP",
								Publisher: "RedHat",
								Sku:       "84sapha-gen2",
								Version:   "latest",
							},
							OsProfile: workloads.OSProfile{
								AdminUsername: "{your-username}",
								OsConfiguration: workloads.LinuxConfiguration{
									DisablePasswordAuthentication: true,
									OsType:                        "Linux",
									SshKeyPair: workloads.SshKeyPair{
										PrivateKey: "xyz",
										PublicKey:  "abc",
									},
								},
							},
							VmSize: "Standard_M32ts",
						},
					},
					DeploymentType: "ThreeTier",
				},
				OsSapConfiguration: &workloads.OsSapConfigurationArgs{
					SapFqdn: pulumi.String("xyz.test.com"),
				},
			},
			Environment:            pulumi.String(workloads.SAPEnvironmentTypeProd),
			Location:               pulumi.String("westcentralus"),
			ResourceGroupName:      pulumi.String("test-rg"),
			SapProduct:             pulumi.String(workloads.SAPProductTypeS4HANA),
			SapVirtualInstanceName: pulumi.String("X00"),
			Tags:                   pulumi.StringMap{},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var sapVirtualInstance = new AzureNative.Workloads.SapVirtualInstance("sapVirtualInstance", new()
    {
        Configuration = new AzureNative.Workloads.Inputs.DeploymentWithOSConfigurationArgs
        {
            AppLocation = "eastus",
            ConfigurationType = "DeploymentWithOSConfig",
            InfrastructureConfiguration = new AzureNative.Workloads.Inputs.ThreeTierConfigurationArgs
            {
                AppResourceGroup = "X00-RG",
                ApplicationServer = new AzureNative.Workloads.Inputs.ApplicationServerConfigurationArgs
                {
                    InstanceCount = 6,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_E32ds_v4",
                    },
                },
                CentralServer = new AzureNative.Workloads.Inputs.CentralServerConfigurationArgs
                {
                    InstanceCount = 1,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_E16ds_v4",
                    },
                },
                CustomResourceNames = new AzureNative.Workloads.Inputs.ThreeTierFullResourceNamesArgs
                {
                    ApplicationServer = new AzureNative.Workloads.Inputs.ApplicationServerFullResourceNamesArgs
                    {
                        AvailabilitySetName = "appAvSet",
                        VirtualMachines = new[]
                        {
                            new AzureNative.Workloads.Inputs.VirtualMachineResourceNamesArgs
                            {
                                DataDiskNames = 
                                {
                                    { "default", new[]
                                    {
                                        "app0disk0",
                                    } },
                                },
                                HostName = "apphostName0",
                                NetworkInterfaces = new[]
                                {
                                    new AzureNative.Workloads.Inputs.NetworkInterfaceResourceNamesArgs
                                    {
                                        NetworkInterfaceName = "appnic0",
                                    },
                                },
                                OsDiskName = "app0osdisk",
                                VmName = "appvm0",
                            },
                            new AzureNative.Workloads.Inputs.VirtualMachineResourceNamesArgs
                            {
                                DataDiskNames = 
                                {
                                    { "default", new[]
                                    {
                                        "app1disk0",
                                    } },
                                },
                                HostName = "apphostName1",
                                NetworkInterfaces = new[]
                                {
                                    new AzureNative.Workloads.Inputs.NetworkInterfaceResourceNamesArgs
                                    {
                                        NetworkInterfaceName = "appnic1",
                                    },
                                },
                                OsDiskName = "app1osdisk",
                                VmName = "appvm1",
                            },
                        },
                    },
                    CentralServer = new AzureNative.Workloads.Inputs.CentralServerFullResourceNamesArgs
                    {
                        VirtualMachines = new[]
                        {
                            new AzureNative.Workloads.Inputs.VirtualMachineResourceNamesArgs
                            {
                                DataDiskNames = 
                                {
                                    { "default", new[]
                                    {
                                        "ascsdisk0",
                                    } },
                                },
                                HostName = "ascshostName",
                                NetworkInterfaces = new[]
                                {
                                    new AzureNative.Workloads.Inputs.NetworkInterfaceResourceNamesArgs
                                    {
                                        NetworkInterfaceName = "ascsnic",
                                    },
                                },
                                OsDiskName = "ascsosdisk",
                                VmName = "ascsvm",
                            },
                        },
                    },
                    DatabaseServer = new AzureNative.Workloads.Inputs.DatabaseServerFullResourceNamesArgs
                    {
                        VirtualMachines = new[]
                        {
                            new AzureNative.Workloads.Inputs.VirtualMachineResourceNamesArgs
                            {
                                DataDiskNames = 
                                {
                                    { "hanaData", new[]
                                    {
                                        "hanadata0",
                                        "hanadata1",
                                    } },
                                    { "hanaLog", new[]
                                    {
                                        "hanalog0",
                                        "hanalog1",
                                        "hanalog2",
                                    } },
                                    { "hanaShared", new[]
                                    {
                                        "hanashared0",
                                        "hanashared1",
                                    } },
                                    { "usrSap", new[]
                                    {
                                        "usrsap0",
                                    } },
                                },
                                HostName = "dbhostName",
                                NetworkInterfaces = new[]
                                {
                                    new AzureNative.Workloads.Inputs.NetworkInterfaceResourceNamesArgs
                                    {
                                        NetworkInterfaceName = "dbnic",
                                    },
                                },
                                OsDiskName = "dbosdisk",
                                VmName = "dbvm",
                            },
                        },
                    },
                    NamingPatternType = "FullResourceName",
                    SharedStorage = new AzureNative.Workloads.Inputs.SharedStorageResourceNamesArgs
                    {
                        SharedStorageAccountName = "storageacc",
                        SharedStorageAccountPrivateEndPointName = "peForxNFS",
                    },
                },
                DatabaseServer = new AzureNative.Workloads.Inputs.DatabaseConfigurationArgs
                {
                    DatabaseType = AzureNative.Workloads.SAPDatabaseType.HANA,
                    InstanceCount = 1,
                    SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet",
                    VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                    {
                        ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                        {
                            Offer = "RHEL-SAP",
                            Publisher = "RedHat",
                            Sku = "84sapha-gen2",
                            Version = "latest",
                        },
                        OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                        {
                            AdminUsername = "{your-username}",
                            OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                            {
                                DisablePasswordAuthentication = true,
                                OsType = "Linux",
                                SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                                {
                                    PrivateKey = "xyz",
                                    PublicKey = "abc",
                                },
                            },
                        },
                        VmSize = "Standard_M32ts",
                    },
                },
                DeploymentType = "ThreeTier",
            },
            OsSapConfiguration = new AzureNative.Workloads.Inputs.OsSapConfigurationArgs
            {
                SapFqdn = "xyz.test.com",
            },
        },
        Environment = AzureNative.Workloads.SAPEnvironmentType.Prod,
        Location = "westcentralus",
        ResourceGroupName = "test-rg",
        SapProduct = AzureNative.Workloads.SAPProductType.S4HANA,
        SapVirtualInstanceName = "X00",
        Tags = null,
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.workloads.SapVirtualInstance;
import com.pulumi.azurenative.workloads.SapVirtualInstanceArgs;
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 sapVirtualInstance = new SapVirtualInstance("sapVirtualInstance", SapVirtualInstanceArgs.builder()
            .configuration(DeploymentWithOSConfigurationArgs.builder()
                .appLocation("eastus")
                .configurationType("DeploymentWithOSConfig")
                .infrastructureConfiguration(ThreeTierConfigurationArgs.builder()
                    .appResourceGroup("X00-RG")
                    .applicationServer(ApplicationServerConfigurationArgs.builder()
                        .instanceCount(6)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_E32ds_v4")
                            .build())
                        .build())
                    .centralServer(CentralServerConfigurationArgs.builder()
                        .instanceCount(1)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_E16ds_v4")
                            .build())
                        .build())
                    .customResourceNames(ThreeTierFullResourceNamesArgs.builder()
                        .applicationServer(ApplicationServerFullResourceNamesArgs.builder()
                            .availabilitySetName("appAvSet")
                            .virtualMachines(                            
                                VirtualMachineResourceNamesArgs.builder()
                                    .dataDiskNames(Map.of("default", "app0disk0"))
                                    .hostName("apphostName0")
                                    .networkInterfaces(NetworkInterfaceResourceNamesArgs.builder()
                                        .networkInterfaceName("appnic0")
                                        .build())
                                    .osDiskName("app0osdisk")
                                    .vmName("appvm0")
                                    .build(),
                                VirtualMachineResourceNamesArgs.builder()
                                    .dataDiskNames(Map.of("default", "app1disk0"))
                                    .hostName("apphostName1")
                                    .networkInterfaces(NetworkInterfaceResourceNamesArgs.builder()
                                        .networkInterfaceName("appnic1")
                                        .build())
                                    .osDiskName("app1osdisk")
                                    .vmName("appvm1")
                                    .build())
                            .build())
                        .centralServer(CentralServerFullResourceNamesArgs.builder()
                            .virtualMachines(VirtualMachineResourceNamesArgs.builder()
                                .dataDiskNames(Map.of("default", "ascsdisk0"))
                                .hostName("ascshostName")
                                .networkInterfaces(NetworkInterfaceResourceNamesArgs.builder()
                                    .networkInterfaceName("ascsnic")
                                    .build())
                                .osDiskName("ascsosdisk")
                                .vmName("ascsvm")
                                .build())
                            .build())
                        .databaseServer(DatabaseServerFullResourceNamesArgs.builder()
                            .virtualMachines(VirtualMachineResourceNamesArgs.builder()
                                .dataDiskNames(Map.ofEntries(
                                    Map.entry("hanaData",                                     
                                        "hanadata0",
                                        "hanadata1"),
                                    Map.entry("hanaLog",                                     
                                        "hanalog0",
                                        "hanalog1",
                                        "hanalog2"),
                                    Map.entry("hanaShared",                                     
                                        "hanashared0",
                                        "hanashared1"),
                                    Map.entry("usrSap", "usrsap0")
                                ))
                                .hostName("dbhostName")
                                .networkInterfaces(NetworkInterfaceResourceNamesArgs.builder()
                                    .networkInterfaceName("dbnic")
                                    .build())
                                .osDiskName("dbosdisk")
                                .vmName("dbvm")
                                .build())
                            .build())
                        .namingPatternType("FullResourceName")
                        .sharedStorage(SharedStorageResourceNamesArgs.builder()
                            .sharedStorageAccountName("storageacc")
                            .sharedStorageAccountPrivateEndPointName("peForxNFS")
                            .build())
                        .build())
                    .databaseServer(DatabaseConfigurationArgs.builder()
                        .databaseType("HANA")
                        .instanceCount(1)
                        .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet")
                        .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                            .imageReference(ImageReferenceArgs.builder()
                                .offer("RHEL-SAP")
                                .publisher("RedHat")
                                .sku("84sapha-gen2")
                                .version("latest")
                                .build())
                            .osProfile(OSProfileArgs.builder()
                                .adminUsername("{your-username}")
                                .osConfiguration(LinuxConfigurationArgs.builder()
                                    .disablePasswordAuthentication(true)
                                    .osType("Linux")
                                    .sshKeyPair(SshKeyPairArgs.builder()
                                        .privateKey("xyz")
                                        .publicKey("abc")
                                        .build())
                                    .build())
                                .build())
                            .vmSize("Standard_M32ts")
                            .build())
                        .build())
                    .deploymentType("ThreeTier")
                    .build())
                .osSapConfiguration(OsSapConfigurationArgs.builder()
                    .sapFqdn("xyz.test.com")
                    .build())
                .build())
            .environment("Prod")
            .location("westcentralus")
            .resourceGroupName("test-rg")
            .sapProduct("S4HANA")
            .sapVirtualInstanceName("X00")
            .tags(Map.ofEntries(
            ))
            .build());

    }
}
resources:
  sapVirtualInstance:
    type: azure-native:workloads:SapVirtualInstance
    properties:
      configuration:
        appLocation: eastus
        configurationType: DeploymentWithOSConfig
        infrastructureConfiguration:
          appResourceGroup: X00-RG
          applicationServer:
            instanceCount: 6
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_E32ds_v4
          centralServer:
            instanceCount: 1
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_E16ds_v4
          customResourceNames:
            applicationServer:
              availabilitySetName: appAvSet
              virtualMachines:
                - dataDiskNames:
                    default:
                      - app0disk0
                  hostName: apphostName0
                  networkInterfaces:
                    - networkInterfaceName: appnic0
                  osDiskName: app0osdisk
                  vmName: appvm0
                - dataDiskNames:
                    default:
                      - app1disk0
                  hostName: apphostName1
                  networkInterfaces:
                    - networkInterfaceName: appnic1
                  osDiskName: app1osdisk
                  vmName: appvm1
            centralServer:
              virtualMachines:
                - dataDiskNames:
                    default:
                      - ascsdisk0
                  hostName: ascshostName
                  networkInterfaces:
                    - networkInterfaceName: ascsnic
                  osDiskName: ascsosdisk
                  vmName: ascsvm
            databaseServer:
              virtualMachines:
                - dataDiskNames:
                    hanaData:
                      - hanadata0
                      - hanadata1
                    hanaLog:
                      - hanalog0
                      - hanalog1
                      - hanalog2
                    hanaShared:
                      - hanashared0
                      - hanashared1
                    usrSap:
                      - usrsap0
                  hostName: dbhostName
                  networkInterfaces:
                    - networkInterfaceName: dbnic
                  osDiskName: dbosdisk
                  vmName: dbvm
            namingPatternType: FullResourceName
            sharedStorage:
              sharedStorageAccountName: storageacc
              sharedStorageAccountPrivateEndPointName: peForxNFS
          databaseServer:
            databaseType: HANA
            instanceCount: 1
            subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/test-rg/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/dbsubnet
            virtualMachineConfiguration:
              imageReference:
                offer: RHEL-SAP
                publisher: RedHat
                sku: 84sapha-gen2
                version: latest
              osProfile:
                adminUsername: '{your-username}'
                osConfiguration:
                  disablePasswordAuthentication: true
                  osType: Linux
                  sshKeyPair:
                    privateKey: xyz
                    publicKey: abc
              vmSize: Standard_M32ts
          deploymentType: ThreeTier
        osSapConfiguration:
          sapFqdn: xyz.test.com
      environment: Prod
      location: westcentralus
      resourceGroupName: test-rg
      sapProduct: S4HANA
      sapVirtualInstanceName: X00
      tags: {}

The customResourceNames property allows you to specify exact names for every resource. Set namingPatternType to FullResourceName, then define virtualMachines arrays for each tier. Each VM entry specifies vmName, hostName, osDiskName, dataDiskNames (keyed by volume type), and networkInterfaces with networkInterfaceName. This gives complete control over resource naming while maintaining the same infrastructure topology.

Deploy a single-server SAP system for non-production

Development, test, and sandbox environments often use a single-server deployment where all SAP components run on one VM.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const sapVirtualInstance = new azure_native.workloads.SapVirtualInstance("sapVirtualInstance", {
    configuration: {
        appLocation: "eastus",
        configurationType: "DeploymentWithOSConfig",
        infrastructureConfiguration: {
            appResourceGroup: "X00-RG",
            databaseType: azure_native.workloads.SAPDatabaseType.HANA,
            dbDiskConfiguration: {
                diskVolumeConfigurations: {
                    backup: {
                        count: 2,
                        sizeGB: 256,
                        sku: {
                            name: azure_native.workloads.DiskSkuName.StandardSSD_LRS,
                        },
                    },
                    "hana/data": {
                        count: 4,
                        sizeGB: 128,
                        sku: {
                            name: azure_native.workloads.DiskSkuName.Premium_LRS,
                        },
                    },
                    "hana/log": {
                        count: 3,
                        sizeGB: 128,
                        sku: {
                            name: azure_native.workloads.DiskSkuName.Premium_LRS,
                        },
                    },
                    "hana/shared": {
                        count: 1,
                        sizeGB: 256,
                        sku: {
                            name: azure_native.workloads.DiskSkuName.StandardSSD_LRS,
                        },
                    },
                    os: {
                        count: 1,
                        sizeGB: 64,
                        sku: {
                            name: azure_native.workloads.DiskSkuName.StandardSSD_LRS,
                        },
                    },
                    "usr/sap": {
                        count: 1,
                        sizeGB: 128,
                        sku: {
                            name: azure_native.workloads.DiskSkuName.Premium_LRS,
                        },
                    },
                },
            },
            deploymentType: "SingleServer",
            networkConfiguration: {
                isSecondaryIpEnabled: true,
            },
            subnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
            virtualMachineConfiguration: {
                imageReference: {
                    offer: "RHEL-SAP",
                    publisher: "RedHat",
                    sku: "84sapha-gen2",
                    version: "latest",
                },
                osProfile: {
                    adminUsername: "{your-username}",
                    osConfiguration: {
                        disablePasswordAuthentication: true,
                        osType: "Linux",
                        sshKeyPair: {
                            privateKey: "xyz",
                            publicKey: "abc",
                        },
                    },
                },
                vmSize: "Standard_E32ds_v4",
            },
        },
        osSapConfiguration: {
            sapFqdn: "xyz.test.com",
        },
    },
    environment: azure_native.workloads.SAPEnvironmentType.NonProd,
    location: "westcentralus",
    resourceGroupName: "test-rg",
    sapProduct: azure_native.workloads.SAPProductType.S4HANA,
    sapVirtualInstanceName: "X00",
    tags: {},
});
import pulumi
import pulumi_azure_native as azure_native

sap_virtual_instance = azure_native.workloads.SapVirtualInstance("sapVirtualInstance",
    configuration={
        "app_location": "eastus",
        "configuration_type": "DeploymentWithOSConfig",
        "infrastructure_configuration": {
            "app_resource_group": "X00-RG",
            "database_type": azure_native.workloads.SAPDatabaseType.HANA,
            "db_disk_configuration": {
                "disk_volume_configurations": {
                    "backup": {
                        "count": 2,
                        "size_gb": 256,
                        "sku": {
                            "name": azure_native.workloads.DiskSkuName.STANDARD_SS_D_LRS,
                        },
                    },
                    "hana/data": {
                        "count": 4,
                        "size_gb": 128,
                        "sku": {
                            "name": azure_native.workloads.DiskSkuName.PREMIUM_LRS,
                        },
                    },
                    "hana/log": {
                        "count": 3,
                        "size_gb": 128,
                        "sku": {
                            "name": azure_native.workloads.DiskSkuName.PREMIUM_LRS,
                        },
                    },
                    "hana/shared": {
                        "count": 1,
                        "size_gb": 256,
                        "sku": {
                            "name": azure_native.workloads.DiskSkuName.STANDARD_SS_D_LRS,
                        },
                    },
                    "os": {
                        "count": 1,
                        "size_gb": 64,
                        "sku": {
                            "name": azure_native.workloads.DiskSkuName.STANDARD_SS_D_LRS,
                        },
                    },
                    "usr/sap": {
                        "count": 1,
                        "size_gb": 128,
                        "sku": {
                            "name": azure_native.workloads.DiskSkuName.PREMIUM_LRS,
                        },
                    },
                },
            },
            "deployment_type": "SingleServer",
            "network_configuration": {
                "is_secondary_ip_enabled": True,
            },
            "subnet_id": "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
            "virtual_machine_configuration": {
                "image_reference": {
                    "offer": "RHEL-SAP",
                    "publisher": "RedHat",
                    "sku": "84sapha-gen2",
                    "version": "latest",
                },
                "os_profile": {
                    "admin_username": "{your-username}",
                    "os_configuration": {
                        "disable_password_authentication": True,
                        "os_type": "Linux",
                        "ssh_key_pair": {
                            "private_key": "xyz",
                            "public_key": "abc",
                        },
                    },
                },
                "vm_size": "Standard_E32ds_v4",
            },
        },
        "os_sap_configuration": {
            "sap_fqdn": "xyz.test.com",
        },
    },
    environment=azure_native.workloads.SAPEnvironmentType.NON_PROD,
    location="westcentralus",
    resource_group_name="test-rg",
    sap_product=azure_native.workloads.SAPProductType.S4_HANA,
    sap_virtual_instance_name="X00",
    tags={})
package main

import (
	workloads "github.com/pulumi/pulumi-azure-native-sdk/workloads/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := workloads.NewSapVirtualInstance(ctx, "sapVirtualInstance", &workloads.SapVirtualInstanceArgs{
			Configuration: &workloads.DeploymentWithOSConfigurationArgs{
				AppLocation:       pulumi.String("eastus"),
				ConfigurationType: pulumi.String("DeploymentWithOSConfig"),
				InfrastructureConfiguration: workloads.SingleServerConfiguration{
					AppResourceGroup: "X00-RG",
					DatabaseType:     workloads.SAPDatabaseTypeHANA,
					DbDiskConfiguration: workloads.DiskConfiguration{
						DiskVolumeConfigurations: map[string]workloads.DiskVolumeConfiguration{
							"backup": workloads.DiskVolumeConfiguration{
								Count:  2,
								SizeGB: 256,
								Sku: workloads.DiskSku{
									Name: workloads.DiskSkuName_StandardSSD_LRS,
								},
							},
							"hana/data": workloads.DiskVolumeConfiguration{
								Count:  4,
								SizeGB: 128,
								Sku: workloads.DiskSku{
									Name: workloads.DiskSkuName_Premium_LRS,
								},
							},
							"hana/log": workloads.DiskVolumeConfiguration{
								Count:  3,
								SizeGB: 128,
								Sku: workloads.DiskSku{
									Name: workloads.DiskSkuName_Premium_LRS,
								},
							},
							"hana/shared": workloads.DiskVolumeConfiguration{
								Count:  1,
								SizeGB: 256,
								Sku: workloads.DiskSku{
									Name: workloads.DiskSkuName_StandardSSD_LRS,
								},
							},
							"os": workloads.DiskVolumeConfiguration{
								Count:  1,
								SizeGB: 64,
								Sku: workloads.DiskSku{
									Name: workloads.DiskSkuName_StandardSSD_LRS,
								},
							},
							"usr/sap": workloads.DiskVolumeConfiguration{
								Count:  1,
								SizeGB: 128,
								Sku: workloads.DiskSku{
									Name: workloads.DiskSkuName_Premium_LRS,
								},
							},
						},
					},
					DeploymentType: "SingleServer",
					NetworkConfiguration: workloads.NetworkConfiguration{
						IsSecondaryIpEnabled: true,
					},
					SubnetId: "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
					VirtualMachineConfiguration: workloads.VirtualMachineConfiguration{
						ImageReference: workloads.ImageReference{
							Offer:     "RHEL-SAP",
							Publisher: "RedHat",
							Sku:       "84sapha-gen2",
							Version:   "latest",
						},
						OsProfile: workloads.OSProfile{
							AdminUsername: "{your-username}",
							OsConfiguration: workloads.LinuxConfiguration{
								DisablePasswordAuthentication: true,
								OsType:                        "Linux",
								SshKeyPair: workloads.SshKeyPair{
									PrivateKey: "xyz",
									PublicKey:  "abc",
								},
							},
						},
						VmSize: "Standard_E32ds_v4",
					},
				},
				OsSapConfiguration: &workloads.OsSapConfigurationArgs{
					SapFqdn: pulumi.String("xyz.test.com"),
				},
			},
			Environment:            pulumi.String(workloads.SAPEnvironmentTypeNonProd),
			Location:               pulumi.String("westcentralus"),
			ResourceGroupName:      pulumi.String("test-rg"),
			SapProduct:             pulumi.String(workloads.SAPProductTypeS4HANA),
			SapVirtualInstanceName: pulumi.String("X00"),
			Tags:                   pulumi.StringMap{},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var sapVirtualInstance = new AzureNative.Workloads.SapVirtualInstance("sapVirtualInstance", new()
    {
        Configuration = new AzureNative.Workloads.Inputs.DeploymentWithOSConfigurationArgs
        {
            AppLocation = "eastus",
            ConfigurationType = "DeploymentWithOSConfig",
            InfrastructureConfiguration = new AzureNative.Workloads.Inputs.SingleServerConfigurationArgs
            {
                AppResourceGroup = "X00-RG",
                DatabaseType = AzureNative.Workloads.SAPDatabaseType.HANA,
                DbDiskConfiguration = new AzureNative.Workloads.Inputs.DiskConfigurationArgs
                {
                    DiskVolumeConfigurations = 
                    {
                        { "backup", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                        {
                            Count = 2,
                            SizeGB = 256,
                            Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                            {
                                Name = AzureNative.Workloads.DiskSkuName.StandardSSD_LRS,
                            },
                        } },
                        { "hana/data", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                        {
                            Count = 4,
                            SizeGB = 128,
                            Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                            {
                                Name = AzureNative.Workloads.DiskSkuName.Premium_LRS,
                            },
                        } },
                        { "hana/log", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                        {
                            Count = 3,
                            SizeGB = 128,
                            Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                            {
                                Name = AzureNative.Workloads.DiskSkuName.Premium_LRS,
                            },
                        } },
                        { "hana/shared", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                        {
                            Count = 1,
                            SizeGB = 256,
                            Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                            {
                                Name = AzureNative.Workloads.DiskSkuName.StandardSSD_LRS,
                            },
                        } },
                        { "os", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                        {
                            Count = 1,
                            SizeGB = 64,
                            Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                            {
                                Name = AzureNative.Workloads.DiskSkuName.StandardSSD_LRS,
                            },
                        } },
                        { "usr/sap", new AzureNative.Workloads.Inputs.DiskVolumeConfigurationArgs
                        {
                            Count = 1,
                            SizeGB = 128,
                            Sku = new AzureNative.Workloads.Inputs.DiskSkuArgs
                            {
                                Name = AzureNative.Workloads.DiskSkuName.Premium_LRS,
                            },
                        } },
                    },
                },
                DeploymentType = "SingleServer",
                NetworkConfiguration = new AzureNative.Workloads.Inputs.NetworkConfigurationArgs
                {
                    IsSecondaryIpEnabled = true,
                },
                SubnetId = "/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet",
                VirtualMachineConfiguration = new AzureNative.Workloads.Inputs.VirtualMachineConfigurationArgs
                {
                    ImageReference = new AzureNative.Workloads.Inputs.ImageReferenceArgs
                    {
                        Offer = "RHEL-SAP",
                        Publisher = "RedHat",
                        Sku = "84sapha-gen2",
                        Version = "latest",
                    },
                    OsProfile = new AzureNative.Workloads.Inputs.OSProfileArgs
                    {
                        AdminUsername = "{your-username}",
                        OsConfiguration = new AzureNative.Workloads.Inputs.LinuxConfigurationArgs
                        {
                            DisablePasswordAuthentication = true,
                            OsType = "Linux",
                            SshKeyPair = new AzureNative.Workloads.Inputs.SshKeyPairArgs
                            {
                                PrivateKey = "xyz",
                                PublicKey = "abc",
                            },
                        },
                    },
                    VmSize = "Standard_E32ds_v4",
                },
            },
            OsSapConfiguration = new AzureNative.Workloads.Inputs.OsSapConfigurationArgs
            {
                SapFqdn = "xyz.test.com",
            },
        },
        Environment = AzureNative.Workloads.SAPEnvironmentType.NonProd,
        Location = "westcentralus",
        ResourceGroupName = "test-rg",
        SapProduct = AzureNative.Workloads.SAPProductType.S4HANA,
        SapVirtualInstanceName = "X00",
        Tags = null,
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.workloads.SapVirtualInstance;
import com.pulumi.azurenative.workloads.SapVirtualInstanceArgs;
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 sapVirtualInstance = new SapVirtualInstance("sapVirtualInstance", SapVirtualInstanceArgs.builder()
            .configuration(DeploymentWithOSConfigurationArgs.builder()
                .appLocation("eastus")
                .configurationType("DeploymentWithOSConfig")
                .infrastructureConfiguration(SingleServerConfigurationArgs.builder()
                    .appResourceGroup("X00-RG")
                    .databaseType("HANA")
                    .dbDiskConfiguration(DiskConfigurationArgs.builder()
                        .diskVolumeConfigurations(Map.ofEntries(
                            Map.entry("backup", DiskVolumeConfigurationArgs.builder()
                                .count(2)
                                .sizeGB(256)
                                .sku(DiskSkuArgs.builder()
                                    .name("StandardSSD_LRS")
                                    .build())
                                .build()),
                            Map.entry("hana/data", DiskVolumeConfigurationArgs.builder()
                                .count(4)
                                .sizeGB(128)
                                .sku(DiskSkuArgs.builder()
                                    .name("Premium_LRS")
                                    .build())
                                .build()),
                            Map.entry("hana/log", DiskVolumeConfigurationArgs.builder()
                                .count(3)
                                .sizeGB(128)
                                .sku(DiskSkuArgs.builder()
                                    .name("Premium_LRS")
                                    .build())
                                .build()),
                            Map.entry("hana/shared", DiskVolumeConfigurationArgs.builder()
                                .count(1)
                                .sizeGB(256)
                                .sku(DiskSkuArgs.builder()
                                    .name("StandardSSD_LRS")
                                    .build())
                                .build()),
                            Map.entry("os", DiskVolumeConfigurationArgs.builder()
                                .count(1)
                                .sizeGB(64)
                                .sku(DiskSkuArgs.builder()
                                    .name("StandardSSD_LRS")
                                    .build())
                                .build()),
                            Map.entry("usr/sap", DiskVolumeConfigurationArgs.builder()
                                .count(1)
                                .sizeGB(128)
                                .sku(DiskSkuArgs.builder()
                                    .name("Premium_LRS")
                                    .build())
                                .build())
                        ))
                        .build())
                    .deploymentType("SingleServer")
                    .networkConfiguration(NetworkConfigurationArgs.builder()
                        .isSecondaryIpEnabled(true)
                        .build())
                    .subnetId("/subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet")
                    .virtualMachineConfiguration(VirtualMachineConfigurationArgs.builder()
                        .imageReference(ImageReferenceArgs.builder()
                            .offer("RHEL-SAP")
                            .publisher("RedHat")
                            .sku("84sapha-gen2")
                            .version("latest")
                            .build())
                        .osProfile(OSProfileArgs.builder()
                            .adminUsername("{your-username}")
                            .osConfiguration(LinuxConfigurationArgs.builder()
                                .disablePasswordAuthentication(true)
                                .osType("Linux")
                                .sshKeyPair(SshKeyPairArgs.builder()
                                    .privateKey("xyz")
                                    .publicKey("abc")
                                    .build())
                                .build())
                            .build())
                        .vmSize("Standard_E32ds_v4")
                        .build())
                    .build())
                .osSapConfiguration(OsSapConfigurationArgs.builder()
                    .sapFqdn("xyz.test.com")
                    .build())
                .build())
            .environment("NonProd")
            .location("westcentralus")
            .resourceGroupName("test-rg")
            .sapProduct("S4HANA")
            .sapVirtualInstanceName("X00")
            .tags(Map.ofEntries(
            ))
            .build());

    }
}
resources:
  sapVirtualInstance:
    type: azure-native:workloads:SapVirtualInstance
    properties:
      configuration:
        appLocation: eastus
        configurationType: DeploymentWithOSConfig
        infrastructureConfiguration:
          appResourceGroup: X00-RG
          databaseType: HANA
          dbDiskConfiguration:
            diskVolumeConfigurations:
              backup:
                count: 2
                sizeGB: 256
                sku:
                  name: StandardSSD_LRS
              hana/data:
                count: 4
                sizeGB: 128
                sku:
                  name: Premium_LRS
              hana/log:
                count: 3
                sizeGB: 128
                sku:
                  name: Premium_LRS
              hana/shared:
                count: 1
                sizeGB: 256
                sku:
                  name: StandardSSD_LRS
              os:
                count: 1
                sizeGB: 64
                sku:
                  name: StandardSSD_LRS
              usr/sap:
                count: 1
                sizeGB: 128
                sku:
                  name: Premium_LRS
          deploymentType: SingleServer
          networkConfiguration:
            isSecondaryIpEnabled: true
          subnetId: /subscriptions/49d64d54-e966-4c46-a868-1999802b762c/resourceGroups/dindurkhya-e2etesting/providers/Microsoft.Networks/virtualNetworks/test-vnet/subnets/appsubnet
          virtualMachineConfiguration:
            imageReference:
              offer: RHEL-SAP
              publisher: RedHat
              sku: 84sapha-gen2
              version: latest
            osProfile:
              adminUsername: '{your-username}'
              osConfiguration:
                disablePasswordAuthentication: true
                osType: Linux
                sshKeyPair:
                  privateKey: xyz
                  publicKey: abc
            vmSize: Standard_E32ds_v4
        osSapConfiguration:
          sapFqdn: xyz.test.com
      environment: NonProd
      location: westcentralus
      resourceGroupName: test-rg
      sapProduct: S4HANA
      sapVirtualInstanceName: X00
      tags: {}

The deploymentType changes to SingleServer, replacing the three-tier structure with a single virtualMachineConfiguration. The databaseType still specifies HANA, and dbDiskConfiguration defines the same disk layout as distributed systems. The networkConfiguration enables isSecondaryIpEnabled for SAP’s virtual hostname requirements. This topology reduces costs for non-production workloads while maintaining configuration consistency.

Beyond these examples

These snippets focus on specific SAP Virtual Instance features: three-tier and single-server deployment topologies, high availability with Availability Sets and Availability Zones, and custom disk layouts and resource naming. They’re intentionally minimal rather than full SAP deployments.

The examples may reference pre-existing infrastructure such as VNets, subnets, resource groups, and SSH key pairs for Linux authentication. They focus on configuring the SAP infrastructure rather than provisioning the surrounding network.

To keep things focused, common SAP deployment patterns are omitted, including:

  • Azure Compute Gallery image references (imageReference with gallery ID)
  • Trusted access and private network configurations (managedResourcesNetworkAccessType)
  • Load balancer configuration for HA systems
  • Shared storage accounts and private endpoints
  • Windows OS configuration (only Linux examples shown)
  • Discovery and registration of existing SAP systems (DeploymentConfiguration vs Discovery)

These omissions are intentional: the goal is to illustrate how each SAP infrastructure feature is wired, not provide drop-in production modules. See the SapVirtualInstance resource reference for all available configuration options.

Let's deploy SAP Virtual Instances

Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.

Try Pulumi Cloud for FREE

Frequently Asked Questions

Deployment Architecture
What deployment architectures are available for SAP on Azure?
Two architectures are supported: ThreeTier (distributed system with separate application servers, central server, and database server) and SingleServer (all SAP components on a single VM for non-production scenarios).
What's the difference between Deployment and DeploymentWithOSConfig?
Deployment creates infrastructure only (VMs, disks, networking), while DeploymentWithOSConfig additionally configures the OS with SAP-specific settings like SSH keys and SAP FQDN.
What high availability options are available?
Two HA strategies: AvailabilitySet (distributes VMs across fault and update domains within a datacenter) and AvailabilityZone (distributes VMs across physically separate zones). Both require multiple instances and load balancers.
Infrastructure Configuration
How do I configure disk volumes for SAP HANA?
Specify diskVolumeConfigurations with volume types: hana/data (data files), hana/log (transaction logs), hana/shared (shared files), backup (backups), os (operating system), and usr/sap (SAP binaries). Each requires count, sizeGB, and SKU (Premium_LRS or StandardSSD_LRS).
What VM sizes should I use for different SAP components?
Examples show: Standard_E32ds_v4 for application servers, Standard_E16ds_v4 for central servers, and Standard_M32ts for database servers. Choose sizes based on SAP sizing guidelines for your workload.
How do I enable private network access for managed resources?
Set managedResourcesNetworkAccessType to Private to enable trusted access with private endpoints for managed resources.
Authentication & Security
How do I configure SSH authentication for Linux VMs?
In osConfiguration, set disablePasswordAuthentication to true and provide either sshKeyPair (with publicKey and privateKey) or ssh configuration with publicKeys array containing SSH public keys.
Resource Customization
How do I specify custom names for Azure resources?
Use customResourceNames with namingPatternType set to FullResourceName, then specify custom names for VMs (vmName, hostName), disks (osDiskName, dataDiskNames), network interfaces (networkInterfaceName), and load balancers.

Using a different cloud?

Explore compute guides for other cloud providers: