VolumeGroupSapHana

class VolumeGroupSapHana : KotlinCustomResource

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure";
import * as random from "@pulumi/random";
const example = new random.RandomString("example", {
length: 12,
special: true,
});
const adminUsername = "exampleadmin";
const adminPassword = example.result;
const exampleResourceGroup = new azure.core.ResourceGroup("example", {
name: `${prefix}-resources`,
location: location,
});
const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
name: `${prefix}-vnet`,
location: exampleResourceGroup.location,
resourceGroupName: exampleResourceGroup.name,
addressSpaces: ["10.88.0.0/16"],
});
const exampleSubnet = new azure.network.Subnet("example", {
name: `${prefix}-delegated-subnet`,
resourceGroupName: exampleResourceGroup.name,
virtualNetworkName: exampleVirtualNetwork.name,
addressPrefixes: ["10.88.2.0/24"],
delegations: [{
name: "testdelegation",
serviceDelegation: {
name: "Microsoft.Netapp/volumes",
actions: [
"Microsoft.Network/networkinterfaces/*",
"Microsoft.Network/virtualNetworks/subnets/join/action",
],
},
}],
});
const example1 = new azure.network.Subnet("example1", {
name: `${prefix}-hosts-subnet`,
resourceGroupName: exampleResourceGroup.name,
virtualNetworkName: exampleVirtualNetwork.name,
addressPrefixes: ["10.88.1.0/24"],
});
const examplePlacementGroup = new azure.proximity.PlacementGroup("example", {
name: `${prefix}-ppg`,
location: exampleResourceGroup.location,
resourceGroupName: exampleResourceGroup.name,
});
const exampleAvailabilitySet = new azure.compute.AvailabilitySet("example", {
name: `${prefix}-avset`,
location: exampleResourceGroup.location,
resourceGroupName: exampleResourceGroup.name,
proximityPlacementGroupId: examplePlacementGroup.id,
});
const exampleNetworkInterface = new azure.network.NetworkInterface("example", {
name: `${prefix}-nic`,
resourceGroupName: exampleResourceGroup.name,
location: exampleResourceGroup.location,
ipConfigurations: [{
name: "internal",
subnetId: example1.id,
privateIpAddressAllocation: "Dynamic",
}],
});
const exampleLinuxVirtualMachine = new azure.compute.LinuxVirtualMachine("example", {
name: `${prefix}-vm`,
resourceGroupName: exampleResourceGroup.name,
location: exampleResourceGroup.location,
size: "Standard_M8ms",
adminUsername: adminUsername,
adminPassword: adminPassword,
disablePasswordAuthentication: false,
proximityPlacementGroupId: examplePlacementGroup.id,
availabilitySetId: exampleAvailabilitySet.id,
networkInterfaceIds: [exampleNetworkInterface.id],
sourceImageReference: {
publisher: "Canonical",
offer: "0001-com-ubuntu-server-jammy",
sku: "22_04-lts",
version: "latest",
},
osDisk: {
storageAccountType: "Standard_LRS",
caching: "ReadWrite",
},
});
const exampleAccount = new azure.netapp.Account("example", {
name: `${prefix}-netapp-account`,
location: exampleResourceGroup.location,
resourceGroupName: exampleResourceGroup.name,
}, {
dependsOn: [
exampleSubnet,
example1,
],
});
const examplePool = new azure.netapp.Pool("example", {
name: `${prefix}-netapp-pool`,
location: exampleResourceGroup.location,
resourceGroupName: exampleResourceGroup.name,
accountName: exampleAccount.name,
serviceLevel: "Standard",
sizeInTb: 8,
qosType: "Manual",
});
const exampleVolumeGroupSapHana = new azure.netapp.VolumeGroupSapHana("example", {
name: `${prefix}-netapp-volumegroup`,
location: exampleResourceGroup.location,
resourceGroupName: exampleResourceGroup.name,
accountName: exampleAccount.name,
groupDescription: "Test volume group",
applicationIdentifier: "TST",
volumes: [
{
name: `${prefix}-netapp-volume-1`,
volumePath: "my-unique-file-path-1",
serviceLevel: "Standard",
capacityPoolId: examplePool.id,
subnetId: exampleSubnet.id,
proximityPlacementGroupId: examplePlacementGroup.id,
volumeSpecName: "data",
storageQuotaInGb: 1024,
throughputInMibps: 24,
protocols: "NFSv4.1",
securityStyle: "unix",
snapshotDirectoryVisible: false,
exportPolicyRules: [{
ruleIndex: 1,
allowedClients: "0.0.0.0/0",
nfsv3Enabled: false,
nfsv41Enabled: true,
unixReadOnly: false,
unixReadWrite: true,
rootAccessEnabled: false,
}],
tags: {
foo: "bar",
},
},
{
name: `${prefix}-netapp-volume-2`,
volumePath: "my-unique-file-path-2",
serviceLevel: "Standard",
capacityPoolId: examplePool.id,
subnetId: exampleSubnet.id,
proximityPlacementGroupId: examplePlacementGroup.id,
volumeSpecName: "log",
storageQuotaInGb: 1024,
throughputInMibps: 24,
protocols: "NFSv4.1",
securityStyle: "unix",
snapshotDirectoryVisible: false,
exportPolicyRules: [{
ruleIndex: 1,
allowedClients: "0.0.0.0/0",
nfsv3Enabled: false,
nfsv41Enabled: true,
unixReadOnly: false,
unixReadWrite: true,
rootAccessEnabled: false,
}],
tags: {
foo: "bar",
},
},
{
name: `${prefix}-netapp-volume-3`,
volumePath: "my-unique-file-path-3",
serviceLevel: "Standard",
capacityPoolId: examplePool.id,
subnetId: exampleSubnet.id,
proximityPlacementGroupId: examplePlacementGroup.id,
volumeSpecName: "shared",
storageQuotaInGb: 1024,
throughputInMibps: 24,
protocols: "NFSv4.1",
securityStyle: "unix",
snapshotDirectoryVisible: false,
exportPolicyRules: [{
ruleIndex: 1,
allowedClients: "0.0.0.0/0",
nfsv3Enabled: false,
nfsv41Enabled: true,
unixReadOnly: false,
unixReadWrite: true,
rootAccessEnabled: false,
}],
},
],
}, {
dependsOn: [
exampleLinuxVirtualMachine,
examplePlacementGroup,
],
});
import pulumi
import pulumi_azure as azure
import pulumi_random as random
example = random.RandomString("example",
length=12,
special=True)
admin_username = "exampleadmin"
admin_password = example.result
example_resource_group = azure.core.ResourceGroup("example",
name=f"{prefix}-resources",
location=location)
example_virtual_network = azure.network.VirtualNetwork("example",
name=f"{prefix}-vnet",
location=example_resource_group.location,
resource_group_name=example_resource_group.name,
address_spaces=["10.88.0.0/16"])
example_subnet = azure.network.Subnet("example",
name=f"{prefix}-delegated-subnet",
resource_group_name=example_resource_group.name,
virtual_network_name=example_virtual_network.name,
address_prefixes=["10.88.2.0/24"],
delegations=[{
"name": "testdelegation",
"service_delegation": {
"name": "Microsoft.Netapp/volumes",
"actions": [
"Microsoft.Network/networkinterfaces/*",
"Microsoft.Network/virtualNetworks/subnets/join/action",
],
},
}])
example1 = azure.network.Subnet("example1",
name=f"{prefix}-hosts-subnet",
resource_group_name=example_resource_group.name,
virtual_network_name=example_virtual_network.name,
address_prefixes=["10.88.1.0/24"])
example_placement_group = azure.proximity.PlacementGroup("example",
name=f"{prefix}-ppg",
location=example_resource_group.location,
resource_group_name=example_resource_group.name)
example_availability_set = azure.compute.AvailabilitySet("example",
name=f"{prefix}-avset",
location=example_resource_group.location,
resource_group_name=example_resource_group.name,
proximity_placement_group_id=example_placement_group.id)
example_network_interface = azure.network.NetworkInterface("example",
name=f"{prefix}-nic",
resource_group_name=example_resource_group.name,
location=example_resource_group.location,
ip_configurations=[{
"name": "internal",
"subnet_id": example1.id,
"private_ip_address_allocation": "Dynamic",
}])
example_linux_virtual_machine = azure.compute.LinuxVirtualMachine("example",
name=f"{prefix}-vm",
resource_group_name=example_resource_group.name,
location=example_resource_group.location,
size="Standard_M8ms",
admin_username=admin_username,
admin_password=admin_password,
disable_password_authentication=False,
proximity_placement_group_id=example_placement_group.id,
availability_set_id=example_availability_set.id,
network_interface_ids=[example_network_interface.id],
source_image_reference={
"publisher": "Canonical",
"offer": "0001-com-ubuntu-server-jammy",
"sku": "22_04-lts",
"version": "latest",
},
os_disk={
"storage_account_type": "Standard_LRS",
"caching": "ReadWrite",
})
example_account = azure.netapp.Account("example",
name=f"{prefix}-netapp-account",
location=example_resource_group.location,
resource_group_name=example_resource_group.name,
opts = pulumi.ResourceOptions(depends_on=[
example_subnet,
example1,
]))
example_pool = azure.netapp.Pool("example",
name=f"{prefix}-netapp-pool",
location=example_resource_group.location,
resource_group_name=example_resource_group.name,
account_name=example_account.name,
service_level="Standard",
size_in_tb=8,
qos_type="Manual")
example_volume_group_sap_hana = azure.netapp.VolumeGroupSapHana("example",
name=f"{prefix}-netapp-volumegroup",
location=example_resource_group.location,
resource_group_name=example_resource_group.name,
account_name=example_account.name,
group_description="Test volume group",
application_identifier="TST",
volumes=[
{
"name": f"{prefix}-netapp-volume-1",
"volume_path": "my-unique-file-path-1",
"service_level": "Standard",
"capacity_pool_id": example_pool.id,
"subnet_id": example_subnet.id,
"proximity_placement_group_id": example_placement_group.id,
"volume_spec_name": "data",
"storage_quota_in_gb": 1024,
"throughput_in_mibps": 24,
"protocols": "NFSv4.1",
"security_style": "unix",
"snapshot_directory_visible": False,
"export_policy_rules": [{
"rule_index": 1,
"allowed_clients": "0.0.0.0/0",
"nfsv3_enabled": False,
"nfsv41_enabled": True,
"unix_read_only": False,
"unix_read_write": True,
"root_access_enabled": False,
}],
"tags": {
"foo": "bar",
},
},
{
"name": f"{prefix}-netapp-volume-2",
"volume_path": "my-unique-file-path-2",
"service_level": "Standard",
"capacity_pool_id": example_pool.id,
"subnet_id": example_subnet.id,
"proximity_placement_group_id": example_placement_group.id,
"volume_spec_name": "log",
"storage_quota_in_gb": 1024,
"throughput_in_mibps": 24,
"protocols": "NFSv4.1",
"security_style": "unix",
"snapshot_directory_visible": False,
"export_policy_rules": [{
"rule_index": 1,
"allowed_clients": "0.0.0.0/0",
"nfsv3_enabled": False,
"nfsv41_enabled": True,
"unix_read_only": False,
"unix_read_write": True,
"root_access_enabled": False,
}],
"tags": {
"foo": "bar",
},
},
{
"name": f"{prefix}-netapp-volume-3",
"volume_path": "my-unique-file-path-3",
"service_level": "Standard",
"capacity_pool_id": example_pool.id,
"subnet_id": example_subnet.id,
"proximity_placement_group_id": example_placement_group.id,
"volume_spec_name": "shared",
"storage_quota_in_gb": 1024,
"throughput_in_mibps": 24,
"protocols": "NFSv4.1",
"security_style": "unix",
"snapshot_directory_visible": False,
"export_policy_rules": [{
"rule_index": 1,
"allowed_clients": "0.0.0.0/0",
"nfsv3_enabled": False,
"nfsv41_enabled": True,
"unix_read_only": False,
"unix_read_write": True,
"root_access_enabled": False,
}],
},
],
opts = pulumi.ResourceOptions(depends_on=[
example_linux_virtual_machine,
example_placement_group,
]))
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Azure = Pulumi.Azure;
using Random = Pulumi.Random;
return await Deployment.RunAsync(() =>
{
var example = new Random.RandomString("example", new()
{
Length = 12,
Special = true,
});
var adminUsername = "exampleadmin";
var adminPassword = example.Result;
var exampleResourceGroup = new Azure.Core.ResourceGroup("example", new()
{
Name = $"{prefix}-resources",
Location = location,
});
var exampleVirtualNetwork = new Azure.Network.VirtualNetwork("example", new()
{
Name = $"{prefix}-vnet",
Location = exampleResourceGroup.Location,
ResourceGroupName = exampleResourceGroup.Name,
AddressSpaces = new[]
{
"10.88.0.0/16",
},
});
var exampleSubnet = new Azure.Network.Subnet("example", new()
{
Name = $"{prefix}-delegated-subnet",
ResourceGroupName = exampleResourceGroup.Name,
VirtualNetworkName = exampleVirtualNetwork.Name,
AddressPrefixes = new[]
{
"10.88.2.0/24",
},
Delegations = new[]
{
new Azure.Network.Inputs.SubnetDelegationArgs
{
Name = "testdelegation",
ServiceDelegation = new Azure.Network.Inputs.SubnetDelegationServiceDelegationArgs
{
Name = "Microsoft.Netapp/volumes",
Actions = new[]
{
"Microsoft.Network/networkinterfaces/*",
"Microsoft.Network/virtualNetworks/subnets/join/action",
},
},
},
},
});
var example1 = new Azure.Network.Subnet("example1", new()
{
Name = $"{prefix}-hosts-subnet",
ResourceGroupName = exampleResourceGroup.Name,
VirtualNetworkName = exampleVirtualNetwork.Name,
AddressPrefixes = new[]
{
"10.88.1.0/24",
},
});
var examplePlacementGroup = new Azure.Proximity.PlacementGroup("example", new()
{
Name = $"{prefix}-ppg",
Location = exampleResourceGroup.Location,
ResourceGroupName = exampleResourceGroup.Name,
});
var exampleAvailabilitySet = new Azure.Compute.AvailabilitySet("example", new()
{
Name = $"{prefix}-avset",
Location = exampleResourceGroup.Location,
ResourceGroupName = exampleResourceGroup.Name,
ProximityPlacementGroupId = examplePlacementGroup.Id,
});
var exampleNetworkInterface = new Azure.Network.NetworkInterface("example", new()
{
Name = $"{prefix}-nic",
ResourceGroupName = exampleResourceGroup.Name,
Location = exampleResourceGroup.Location,
IpConfigurations = new[]
{
new Azure.Network.Inputs.NetworkInterfaceIpConfigurationArgs
{
Name = "internal",
SubnetId = example1.Id,
PrivateIpAddressAllocation = "Dynamic",
},
},
});
var exampleLinuxVirtualMachine = new Azure.Compute.LinuxVirtualMachine("example", new()
{
Name = $"{prefix}-vm",
ResourceGroupName = exampleResourceGroup.Name,
Location = exampleResourceGroup.Location,
Size = "Standard_M8ms",
AdminUsername = adminUsername,
AdminPassword = adminPassword,
DisablePasswordAuthentication = false,
ProximityPlacementGroupId = examplePlacementGroup.Id,
AvailabilitySetId = exampleAvailabilitySet.Id,
NetworkInterfaceIds = new[]
{
exampleNetworkInterface.Id,
},
SourceImageReference = new Azure.Compute.Inputs.LinuxVirtualMachineSourceImageReferenceArgs
{
Publisher = "Canonical",
Offer = "0001-com-ubuntu-server-jammy",
Sku = "22_04-lts",
Version = "latest",
},
OsDisk = new Azure.Compute.Inputs.LinuxVirtualMachineOsDiskArgs
{
StorageAccountType = "Standard_LRS",
Caching = "ReadWrite",
},
});
var exampleAccount = new Azure.NetApp.Account("example", new()
{
Name = $"{prefix}-netapp-account",
Location = exampleResourceGroup.Location,
ResourceGroupName = exampleResourceGroup.Name,
}, new CustomResourceOptions
{
DependsOn =
{
exampleSubnet,
example1,
},
});
var examplePool = new Azure.NetApp.Pool("example", new()
{
Name = $"{prefix}-netapp-pool",
Location = exampleResourceGroup.Location,
ResourceGroupName = exampleResourceGroup.Name,
AccountName = exampleAccount.Name,
ServiceLevel = "Standard",
SizeInTb = 8,
QosType = "Manual",
});
var exampleVolumeGroupSapHana = new Azure.NetApp.VolumeGroupSapHana("example", new()
{
Name = $"{prefix}-netapp-volumegroup",
Location = exampleResourceGroup.Location,
ResourceGroupName = exampleResourceGroup.Name,
AccountName = exampleAccount.Name,
GroupDescription = "Test volume group",
ApplicationIdentifier = "TST",
Volumes = new[]
{
new Azure.NetApp.Inputs.VolumeGroupSapHanaVolumeArgs
{
Name = $"{prefix}-netapp-volume-1",
VolumePath = "my-unique-file-path-1",
ServiceLevel = "Standard",
CapacityPoolId = examplePool.Id,
SubnetId = exampleSubnet.Id,
ProximityPlacementGroupId = examplePlacementGroup.Id,
VolumeSpecName = "data",
StorageQuotaInGb = 1024,
ThroughputInMibps = 24,
Protocols = "NFSv4.1",
SecurityStyle = "unix",
SnapshotDirectoryVisible = false,
ExportPolicyRules = new[]
{
new Azure.NetApp.Inputs.VolumeGroupSapHanaVolumeExportPolicyRuleArgs
{
RuleIndex = 1,
AllowedClients = "0.0.0.0/0",
Nfsv3Enabled = false,
Nfsv41Enabled = true,
UnixReadOnly = false,
UnixReadWrite = true,
RootAccessEnabled = false,
},
},
Tags =
{
{ "foo", "bar" },
},
},
new Azure.NetApp.Inputs.VolumeGroupSapHanaVolumeArgs
{
Name = $"{prefix}-netapp-volume-2",
VolumePath = "my-unique-file-path-2",
ServiceLevel = "Standard",
CapacityPoolId = examplePool.Id,
SubnetId = exampleSubnet.Id,
ProximityPlacementGroupId = examplePlacementGroup.Id,
VolumeSpecName = "log",
StorageQuotaInGb = 1024,
ThroughputInMibps = 24,
Protocols = "NFSv4.1",
SecurityStyle = "unix",
SnapshotDirectoryVisible = false,
ExportPolicyRules = new[]
{
new Azure.NetApp.Inputs.VolumeGroupSapHanaVolumeExportPolicyRuleArgs
{
RuleIndex = 1,
AllowedClients = "0.0.0.0/0",
Nfsv3Enabled = false,
Nfsv41Enabled = true,
UnixReadOnly = false,
UnixReadWrite = true,
RootAccessEnabled = false,
},
},
Tags =
{
{ "foo", "bar" },
},
},
new Azure.NetApp.Inputs.VolumeGroupSapHanaVolumeArgs
{
Name = $"{prefix}-netapp-volume-3",
VolumePath = "my-unique-file-path-3",
ServiceLevel = "Standard",
CapacityPoolId = examplePool.Id,
SubnetId = exampleSubnet.Id,
ProximityPlacementGroupId = examplePlacementGroup.Id,
VolumeSpecName = "shared",
StorageQuotaInGb = 1024,
ThroughputInMibps = 24,
Protocols = "NFSv4.1",
SecurityStyle = "unix",
SnapshotDirectoryVisible = false,
ExportPolicyRules = new[]
{
new Azure.NetApp.Inputs.VolumeGroupSapHanaVolumeExportPolicyRuleArgs
{
RuleIndex = 1,
AllowedClients = "0.0.0.0/0",
Nfsv3Enabled = false,
Nfsv41Enabled = true,
UnixReadOnly = false,
UnixReadWrite = true,
RootAccessEnabled = false,
},
},
},
},
}, new CustomResourceOptions
{
DependsOn =
{
exampleLinuxVirtualMachine,
examplePlacementGroup,
},
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/netapp"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/proximity"
"github.com/pulumi/pulumi-random/sdk/v4/go/random"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
example, err := random.NewRandomString(ctx, "example", &random.RandomStringArgs{
Length: pulumi.Int(12),
Special: pulumi.Bool(true),
})
if err != nil {
return err
}
adminUsername := "exampleadmin"
adminPassword := example.Result
exampleResourceGroup, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
Name: pulumi.Sprintf("%v-resources", prefix),
Location: pulumi.Any(location),
})
if err != nil {
return err
}
exampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, "example", &network.VirtualNetworkArgs{
Name: pulumi.Sprintf("%v-vnet", prefix),
Location: exampleResourceGroup.Location,
ResourceGroupName: exampleResourceGroup.Name,
AddressSpaces: pulumi.StringArray{
pulumi.String("10.88.0.0/16"),
},
})
if err != nil {
return err
}
exampleSubnet, err := network.NewSubnet(ctx, "example", &network.SubnetArgs{
Name: pulumi.Sprintf("%v-delegated-subnet", prefix),
ResourceGroupName: exampleResourceGroup.Name,
VirtualNetworkName: exampleVirtualNetwork.Name,
AddressPrefixes: pulumi.StringArray{
pulumi.String("10.88.2.0/24"),
},
Delegations: network.SubnetDelegationArray{
&network.SubnetDelegationArgs{
Name: pulumi.String("testdelegation"),
ServiceDelegation: &network.SubnetDelegationServiceDelegationArgs{
Name: pulumi.String("Microsoft.Netapp/volumes"),
Actions: pulumi.StringArray{
pulumi.String("Microsoft.Network/networkinterfaces/*"),
pulumi.String("Microsoft.Network/virtualNetworks/subnets/join/action"),
},
},
},
},
})
if err != nil {
return err
}
example1, err := network.NewSubnet(ctx, "example1", &network.SubnetArgs{
Name: pulumi.Sprintf("%v-hosts-subnet", prefix),
ResourceGroupName: exampleResourceGroup.Name,
VirtualNetworkName: exampleVirtualNetwork.Name,
AddressPrefixes: pulumi.StringArray{
pulumi.String("10.88.1.0/24"),
},
})
if err != nil {
return err
}
examplePlacementGroup, err := proximity.NewPlacementGroup(ctx, "example", &proximity.PlacementGroupArgs{
Name: pulumi.Sprintf("%v-ppg", prefix),
Location: exampleResourceGroup.Location,
ResourceGroupName: exampleResourceGroup.Name,
})
if err != nil {
return err
}
exampleAvailabilitySet, err := compute.NewAvailabilitySet(ctx, "example", &compute.AvailabilitySetArgs{
Name: pulumi.Sprintf("%v-avset", prefix),
Location: exampleResourceGroup.Location,
ResourceGroupName: exampleResourceGroup.Name,
ProximityPlacementGroupId: examplePlacementGroup.ID(),
})
if err != nil {
return err
}
exampleNetworkInterface, err := network.NewNetworkInterface(ctx, "example", &network.NetworkInterfaceArgs{
Name: pulumi.Sprintf("%v-nic", prefix),
ResourceGroupName: exampleResourceGroup.Name,
Location: exampleResourceGroup.Location,
IpConfigurations: network.NetworkInterfaceIpConfigurationArray{
&network.NetworkInterfaceIpConfigurationArgs{
Name: pulumi.String("internal"),
SubnetId: example1.ID(),
PrivateIpAddressAllocation: pulumi.String("Dynamic"),
},
},
})
if err != nil {
return err
}
exampleLinuxVirtualMachine, err := compute.NewLinuxVirtualMachine(ctx, "example", &compute.LinuxVirtualMachineArgs{
Name: pulumi.Sprintf("%v-vm", prefix),
ResourceGroupName: exampleResourceGroup.Name,
Location: exampleResourceGroup.Location,
Size: pulumi.String("Standard_M8ms"),
AdminUsername: pulumi.String(adminUsername),
AdminPassword: pulumi.String(adminPassword),
DisablePasswordAuthentication: pulumi.Bool(false),
ProximityPlacementGroupId: examplePlacementGroup.ID(),
AvailabilitySetId: exampleAvailabilitySet.ID(),
NetworkInterfaceIds: pulumi.StringArray{
exampleNetworkInterface.ID(),
},
SourceImageReference: &compute.LinuxVirtualMachineSourceImageReferenceArgs{
Publisher: pulumi.String("Canonical"),
Offer: pulumi.String("0001-com-ubuntu-server-jammy"),
Sku: pulumi.String("22_04-lts"),
Version: pulumi.String("latest"),
},
OsDisk: &compute.LinuxVirtualMachineOsDiskArgs{
StorageAccountType: pulumi.String("Standard_LRS"),
Caching: pulumi.String("ReadWrite"),
},
})
if err != nil {
return err
}
exampleAccount, err := netapp.NewAccount(ctx, "example", &netapp.AccountArgs{
Name: pulumi.Sprintf("%v-netapp-account", prefix),
Location: exampleResourceGroup.Location,
ResourceGroupName: exampleResourceGroup.Name,
}, pulumi.DependsOn([]pulumi.Resource{
exampleSubnet,
example1,
}))
if err != nil {
return err
}
examplePool, err := netapp.NewPool(ctx, "example", &netapp.PoolArgs{
Name: pulumi.Sprintf("%v-netapp-pool", prefix),
Location: exampleResourceGroup.Location,
ResourceGroupName: exampleResourceGroup.Name,
AccountName: exampleAccount.Name,
ServiceLevel: pulumi.String("Standard"),
SizeInTb: pulumi.Int(8),
QosType: pulumi.String("Manual"),
})
if err != nil {
return err
}
_, err = netapp.NewVolumeGroupSapHana(ctx, "example", &netapp.VolumeGroupSapHanaArgs{
Name: pulumi.Sprintf("%v-netapp-volumegroup", prefix),
Location: exampleResourceGroup.Location,
ResourceGroupName: exampleResourceGroup.Name,
AccountName: exampleAccount.Name,
GroupDescription: pulumi.String("Test volume group"),
ApplicationIdentifier: pulumi.String("TST"),
Volumes: netapp.VolumeGroupSapHanaVolumeArray{
&netapp.VolumeGroupSapHanaVolumeArgs{
Name: pulumi.Sprintf("%v-netapp-volume-1", prefix),
VolumePath: pulumi.String("my-unique-file-path-1"),
ServiceLevel: pulumi.String("Standard"),
CapacityPoolId: examplePool.ID(),
SubnetId: exampleSubnet.ID(),
ProximityPlacementGroupId: examplePlacementGroup.ID(),
VolumeSpecName: pulumi.String("data"),
StorageQuotaInGb: pulumi.Int(1024),
ThroughputInMibps: pulumi.Float64(24),
Protocols: pulumi.String("NFSv4.1"),
SecurityStyle: pulumi.String("unix"),
SnapshotDirectoryVisible: pulumi.Bool(false),
ExportPolicyRules: netapp.VolumeGroupSapHanaVolumeExportPolicyRuleArray{
&netapp.VolumeGroupSapHanaVolumeExportPolicyRuleArgs{
RuleIndex: pulumi.Int(1),
AllowedClients: pulumi.String("0.0.0.0/0"),
Nfsv3Enabled: pulumi.Bool(false),
Nfsv41Enabled: pulumi.Bool(true),
UnixReadOnly: pulumi.Bool(false),
UnixReadWrite: pulumi.Bool(true),
RootAccessEnabled: pulumi.Bool(false),
},
},
Tags: pulumi.StringMap{
"foo": pulumi.String("bar"),
},
},
&netapp.VolumeGroupSapHanaVolumeArgs{
Name: pulumi.Sprintf("%v-netapp-volume-2", prefix),
VolumePath: pulumi.String("my-unique-file-path-2"),
ServiceLevel: pulumi.String("Standard"),
CapacityPoolId: examplePool.ID(),
SubnetId: exampleSubnet.ID(),
ProximityPlacementGroupId: examplePlacementGroup.ID(),
VolumeSpecName: pulumi.String("log"),
StorageQuotaInGb: pulumi.Int(1024),
ThroughputInMibps: pulumi.Float64(24),
Protocols: pulumi.String("NFSv4.1"),
SecurityStyle: pulumi.String("unix"),
SnapshotDirectoryVisible: pulumi.Bool(false),
ExportPolicyRules: netapp.VolumeGroupSapHanaVolumeExportPolicyRuleArray{
&netapp.VolumeGroupSapHanaVolumeExportPolicyRuleArgs{
RuleIndex: pulumi.Int(1),
AllowedClients: pulumi.String("0.0.0.0/0"),
Nfsv3Enabled: pulumi.Bool(false),
Nfsv41Enabled: pulumi.Bool(true),
UnixReadOnly: pulumi.Bool(false),
UnixReadWrite: pulumi.Bool(true),
RootAccessEnabled: pulumi.Bool(false),
},
},
Tags: pulumi.StringMap{
"foo": pulumi.String("bar"),
},
},
&netapp.VolumeGroupSapHanaVolumeArgs{
Name: pulumi.Sprintf("%v-netapp-volume-3", prefix),
VolumePath: pulumi.String("my-unique-file-path-3"),
ServiceLevel: pulumi.String("Standard"),
CapacityPoolId: examplePool.ID(),
SubnetId: exampleSubnet.ID(),
ProximityPlacementGroupId: examplePlacementGroup.ID(),
VolumeSpecName: pulumi.String("shared"),
StorageQuotaInGb: pulumi.Int(1024),
ThroughputInMibps: pulumi.Float64(24),
Protocols: pulumi.String("NFSv4.1"),
SecurityStyle: pulumi.String("unix"),
SnapshotDirectoryVisible: pulumi.Bool(false),
ExportPolicyRules: netapp.VolumeGroupSapHanaVolumeExportPolicyRuleArray{
&netapp.VolumeGroupSapHanaVolumeExportPolicyRuleArgs{
RuleIndex: pulumi.Int(1),
AllowedClients: pulumi.String("0.0.0.0/0"),
Nfsv3Enabled: pulumi.Bool(false),
Nfsv41Enabled: pulumi.Bool(true),
UnixReadOnly: pulumi.Bool(false),
UnixReadWrite: pulumi.Bool(true),
RootAccessEnabled: pulumi.Bool(false),
},
},
},
},
}, pulumi.DependsOn([]pulumi.Resource{
exampleLinuxVirtualMachine,
examplePlacementGroup,
}))
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.random.RandomString;
import com.pulumi.random.RandomStringArgs;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.network.VirtualNetwork;
import com.pulumi.azure.network.VirtualNetworkArgs;
import com.pulumi.azure.network.Subnet;
import com.pulumi.azure.network.SubnetArgs;
import com.pulumi.azure.network.inputs.SubnetDelegationArgs;
import com.pulumi.azure.network.inputs.SubnetDelegationServiceDelegationArgs;
import com.pulumi.azure.proximity.PlacementGroup;
import com.pulumi.azure.proximity.PlacementGroupArgs;
import com.pulumi.azure.compute.AvailabilitySet;
import com.pulumi.azure.compute.AvailabilitySetArgs;
import com.pulumi.azure.network.NetworkInterface;
import com.pulumi.azure.network.NetworkInterfaceArgs;
import com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;
import com.pulumi.azure.compute.LinuxVirtualMachine;
import com.pulumi.azure.compute.LinuxVirtualMachineArgs;
import com.pulumi.azure.compute.inputs.LinuxVirtualMachineSourceImageReferenceArgs;
import com.pulumi.azure.compute.inputs.LinuxVirtualMachineOsDiskArgs;
import com.pulumi.azure.netapp.Account;
import com.pulumi.azure.netapp.AccountArgs;
import com.pulumi.azure.netapp.Pool;
import com.pulumi.azure.netapp.PoolArgs;
import com.pulumi.azure.netapp.VolumeGroupSapHana;
import com.pulumi.azure.netapp.VolumeGroupSapHanaArgs;
import com.pulumi.azure.netapp.inputs.VolumeGroupSapHanaVolumeArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new RandomString("example", RandomStringArgs.builder()
.length(12)
.special(true)
.build());
final var adminUsername = "exampleadmin";
final var adminPassword = example.result();
var exampleResourceGroup = new ResourceGroup("exampleResourceGroup", ResourceGroupArgs.builder()
.name(String.format("%s-resources", prefix))
.location(location)
.build());
var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
.name(String.format("%s-vnet", prefix))
.location(exampleResourceGroup.location())
.resourceGroupName(exampleResourceGroup.name())
.addressSpaces("10.88.0.0/16")
.build());
var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
.name(String.format("%s-delegated-subnet", prefix))
.resourceGroupName(exampleResourceGroup.name())
.virtualNetworkName(exampleVirtualNetwork.name())
.addressPrefixes("10.88.2.0/24")
.delegations(SubnetDelegationArgs.builder()
.name("testdelegation")
.serviceDelegation(SubnetDelegationServiceDelegationArgs.builder()
.name("Microsoft.Netapp/volumes")
.actions(
"Microsoft.Network/networkinterfaces/*",
"Microsoft.Network/virtualNetworks/subnets/join/action")
.build())
.build())
.build());
var example1 = new Subnet("example1", SubnetArgs.builder()
.name(String.format("%s-hosts-subnet", prefix))
.resourceGroupName(exampleResourceGroup.name())
.virtualNetworkName(exampleVirtualNetwork.name())
.addressPrefixes("10.88.1.0/24")
.build());
var examplePlacementGroup = new PlacementGroup("examplePlacementGroup", PlacementGroupArgs.builder()
.name(String.format("%s-ppg", prefix))
.location(exampleResourceGroup.location())
.resourceGroupName(exampleResourceGroup.name())
.build());
var exampleAvailabilitySet = new AvailabilitySet("exampleAvailabilitySet", AvailabilitySetArgs.builder()
.name(String.format("%s-avset", prefix))
.location(exampleResourceGroup.location())
.resourceGroupName(exampleResourceGroup.name())
.proximityPlacementGroupId(examplePlacementGroup.id())
.build());
var exampleNetworkInterface = new NetworkInterface("exampleNetworkInterface", NetworkInterfaceArgs.builder()
.name(String.format("%s-nic", prefix))
.resourceGroupName(exampleResourceGroup.name())
.location(exampleResourceGroup.location())
.ipConfigurations(NetworkInterfaceIpConfigurationArgs.builder()
.name("internal")
.subnetId(example1.id())
.privateIpAddressAllocation("Dynamic")
.build())
.build());
var exampleLinuxVirtualMachine = new LinuxVirtualMachine("exampleLinuxVirtualMachine", LinuxVirtualMachineArgs.builder()
.name(String.format("%s-vm", prefix))
.resourceGroupName(exampleResourceGroup.name())
.location(exampleResourceGroup.location())
.size("Standard_M8ms")
.adminUsername(adminUsername)
.adminPassword(adminPassword)
.disablePasswordAuthentication(false)
.proximityPlacementGroupId(examplePlacementGroup.id())
.availabilitySetId(exampleAvailabilitySet.id())
.networkInterfaceIds(exampleNetworkInterface.id())
.sourceImageReference(LinuxVirtualMachineSourceImageReferenceArgs.builder()
.publisher("Canonical")
.offer("0001-com-ubuntu-server-jammy")
.sku("22_04-lts")
.version("latest")
.build())
.osDisk(LinuxVirtualMachineOsDiskArgs.builder()
.storageAccountType("Standard_LRS")
.caching("ReadWrite")
.build())
.build());
var exampleAccount = new Account("exampleAccount", AccountArgs.builder()
.name(String.format("%s-netapp-account", prefix))
.location(exampleResourceGroup.location())
.resourceGroupName(exampleResourceGroup.name())
.build(), CustomResourceOptions.builder()
.dependsOn(
exampleSubnet,
example1)
.build());
var examplePool = new Pool("examplePool", PoolArgs.builder()
.name(String.format("%s-netapp-pool", prefix))
.location(exampleResourceGroup.location())
.resourceGroupName(exampleResourceGroup.name())
.accountName(exampleAccount.name())
.serviceLevel("Standard")
.sizeInTb(8)
.qosType("Manual")
.build());
var exampleVolumeGroupSapHana = new VolumeGroupSapHana("exampleVolumeGroupSapHana", VolumeGroupSapHanaArgs.builder()
.name(String.format("%s-netapp-volumegroup", prefix))
.location(exampleResourceGroup.location())
.resourceGroupName(exampleResourceGroup.name())
.accountName(exampleAccount.name())
.groupDescription("Test volume group")
.applicationIdentifier("TST")
.volumes(
VolumeGroupSapHanaVolumeArgs.builder()
.name(String.format("%s-netapp-volume-1", prefix))
.volumePath("my-unique-file-path-1")
.serviceLevel("Standard")
.capacityPoolId(examplePool.id())
.subnetId(exampleSubnet.id())
.proximityPlacementGroupId(examplePlacementGroup.id())
.volumeSpecName("data")
.storageQuotaInGb(1024)
.throughputInMibps(24.0)
.protocols("NFSv4.1")
.securityStyle("unix")
.snapshotDirectoryVisible(false)
.exportPolicyRules(VolumeGroupSapHanaVolumeExportPolicyRuleArgs.builder()
.ruleIndex(1)
.allowedClients("0.0.0.0/0")
.nfsv3Enabled(false)
.nfsv41Enabled(true)
.unixReadOnly(false)
.unixReadWrite(true)
.rootAccessEnabled(false)
.build())
.tags(Map.of("foo", "bar"))
.build(),
VolumeGroupSapHanaVolumeArgs.builder()
.name(String.format("%s-netapp-volume-2", prefix))
.volumePath("my-unique-file-path-2")
.serviceLevel("Standard")
.capacityPoolId(examplePool.id())
.subnetId(exampleSubnet.id())
.proximityPlacementGroupId(examplePlacementGroup.id())
.volumeSpecName("log")
.storageQuotaInGb(1024)
.throughputInMibps(24.0)
.protocols("NFSv4.1")
.securityStyle("unix")
.snapshotDirectoryVisible(false)
.exportPolicyRules(VolumeGroupSapHanaVolumeExportPolicyRuleArgs.builder()
.ruleIndex(1)
.allowedClients("0.0.0.0/0")
.nfsv3Enabled(false)
.nfsv41Enabled(true)
.unixReadOnly(false)
.unixReadWrite(true)
.rootAccessEnabled(false)
.build())
.tags(Map.of("foo", "bar"))
.build(),
VolumeGroupSapHanaVolumeArgs.builder()
.name(String.format("%s-netapp-volume-3", prefix))
.volumePath("my-unique-file-path-3")
.serviceLevel("Standard")
.capacityPoolId(examplePool.id())
.subnetId(exampleSubnet.id())
.proximityPlacementGroupId(examplePlacementGroup.id())
.volumeSpecName("shared")
.storageQuotaInGb(1024)
.throughputInMibps(24.0)
.protocols("NFSv4.1")
.securityStyle("unix")
.snapshotDirectoryVisible(false)
.exportPolicyRules(VolumeGroupSapHanaVolumeExportPolicyRuleArgs.builder()
.ruleIndex(1)
.allowedClients("0.0.0.0/0")
.nfsv3Enabled(false)
.nfsv41Enabled(true)
.unixReadOnly(false)
.unixReadWrite(true)
.rootAccessEnabled(false)
.build())
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(
exampleLinuxVirtualMachine,
examplePlacementGroup)
.build());
}
}
resources:
example:
type: random:RandomString
properties:
length: 12
special: true
exampleResourceGroup:
type: azure:core:ResourceGroup
name: example
properties:
name: ${prefix}-resources
location: ${location}
exampleVirtualNetwork:
type: azure:network:VirtualNetwork
name: example
properties:
name: ${prefix}-vnet
location: ${exampleResourceGroup.location}
resourceGroupName: ${exampleResourceGroup.name}
addressSpaces:
- 10.88.0.0/16
exampleSubnet:
type: azure:network:Subnet
name: example
properties:
name: ${prefix}-delegated-subnet
resourceGroupName: ${exampleResourceGroup.name}
virtualNetworkName: ${exampleVirtualNetwork.name}
addressPrefixes:
- 10.88.2.0/24
delegations:
- name: testdelegation
serviceDelegation:
name: Microsoft.Netapp/volumes
actions:
- Microsoft.Network/networkinterfaces/*
- Microsoft.Network/virtualNetworks/subnets/join/action
example1:
type: azure:network:Subnet
properties:
name: ${prefix}-hosts-subnet
resourceGroupName: ${exampleResourceGroup.name}
virtualNetworkName: ${exampleVirtualNetwork.name}
addressPrefixes:
- 10.88.1.0/24
examplePlacementGroup:
type: azure:proximity:PlacementGroup
name: example
properties:
name: ${prefix}-ppg
location: ${exampleResourceGroup.location}
resourceGroupName: ${exampleResourceGroup.name}
exampleAvailabilitySet:
type: azure:compute:AvailabilitySet
name: example
properties:
name: ${prefix}-avset
location: ${exampleResourceGroup.location}
resourceGroupName: ${exampleResourceGroup.name}
proximityPlacementGroupId: ${examplePlacementGroup.id}
exampleNetworkInterface:
type: azure:network:NetworkInterface
name: example
properties:
name: ${prefix}-nic
resourceGroupName: ${exampleResourceGroup.name}
location: ${exampleResourceGroup.location}
ipConfigurations:
- name: internal
subnetId: ${example1.id}
privateIpAddressAllocation: Dynamic
exampleLinuxVirtualMachine:
type: azure:compute:LinuxVirtualMachine
name: example
properties:
name: ${prefix}-vm
resourceGroupName: ${exampleResourceGroup.name}
location: ${exampleResourceGroup.location}
size: Standard_M8ms
adminUsername: ${adminUsername}
adminPassword: ${adminPassword}
disablePasswordAuthentication: false
proximityPlacementGroupId: ${examplePlacementGroup.id}
availabilitySetId: ${exampleAvailabilitySet.id}
networkInterfaceIds:
- ${exampleNetworkInterface.id}
sourceImageReference:
publisher: Canonical
offer: 0001-com-ubuntu-server-jammy
sku: 22_04-lts
version: latest
osDisk:
storageAccountType: Standard_LRS
caching: ReadWrite
exampleAccount:
type: azure:netapp:Account
name: example
properties:
name: ${prefix}-netapp-account
location: ${exampleResourceGroup.location}
resourceGroupName: ${exampleResourceGroup.name}
options:
dependsOn:
- ${exampleSubnet}
- ${example1}
examplePool:
type: azure:netapp:Pool
name: example
properties:
name: ${prefix}-netapp-pool
location: ${exampleResourceGroup.location}
resourceGroupName: ${exampleResourceGroup.name}
accountName: ${exampleAccount.name}
serviceLevel: Standard
sizeInTb: 8
qosType: Manual
exampleVolumeGroupSapHana:
type: azure:netapp:VolumeGroupSapHana
name: example
properties:
name: ${prefix}-netapp-volumegroup
location: ${exampleResourceGroup.location}
resourceGroupName: ${exampleResourceGroup.name}
accountName: ${exampleAccount.name}
groupDescription: Test volume group
applicationIdentifier: TST
volumes:
- name: ${prefix}-netapp-volume-1
volumePath: my-unique-file-path-1
serviceLevel: Standard
capacityPoolId: ${examplePool.id}
subnetId: ${exampleSubnet.id}
proximityPlacementGroupId: ${examplePlacementGroup.id}
volumeSpecName: data
storageQuotaInGb: 1024
throughputInMibps: 24
protocols: NFSv4.1
securityStyle: unix
snapshotDirectoryVisible: false
exportPolicyRules:
- ruleIndex: 1
allowedClients: 0.0.0.0/0
nfsv3Enabled: false
nfsv41Enabled: true
unixReadOnly: false
unixReadWrite: true
rootAccessEnabled: false
tags:
foo: bar
- name: ${prefix}-netapp-volume-2
volumePath: my-unique-file-path-2
serviceLevel: Standard
capacityPoolId: ${examplePool.id}
subnetId: ${exampleSubnet.id}
proximityPlacementGroupId: ${examplePlacementGroup.id}
volumeSpecName: log
storageQuotaInGb: 1024
throughputInMibps: 24
protocols: NFSv4.1
securityStyle: unix
snapshotDirectoryVisible: false
exportPolicyRules:
- ruleIndex: 1
allowedClients: 0.0.0.0/0
nfsv3Enabled: false
nfsv41Enabled: true
unixReadOnly: false
unixReadWrite: true
rootAccessEnabled: false
tags:
foo: bar
- name: ${prefix}-netapp-volume-3
volumePath: my-unique-file-path-3
serviceLevel: Standard
capacityPoolId: ${examplePool.id}
subnetId: ${exampleSubnet.id}
proximityPlacementGroupId: ${examplePlacementGroup.id}
volumeSpecName: shared
storageQuotaInGb: 1024
throughputInMibps: 24
protocols: NFSv4.1
securityStyle: unix
snapshotDirectoryVisible: false
exportPolicyRules:
- ruleIndex: 1
allowedClients: 0.0.0.0/0
nfsv3Enabled: false
nfsv41Enabled: true
unixReadOnly: false
unixReadWrite: true
rootAccessEnabled: false
options:
dependsOn:
- ${exampleLinuxVirtualMachine}
- ${examplePlacementGroup}
variables:
adminUsername: exampleadmin
adminPassword: ${example.result}

API Providers

This resource uses the following Azure API Providers:

  • Microsoft.NetApp: 2025-01-01

Import

Application Volume Groups can be imported using the resource id, e.g.

$ pulumi import azure:netapp/volumeGroupSapHana:VolumeGroupSapHana example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mytest-rg/providers/Microsoft.NetApp/netAppAccounts/netapp-account-test/volumeGroups/netapp-volumegroup-test

//////

Properties

Link copied to clipboard
val accountName: Output<String>

Name of the account where the application volume group belong to. Changing this forces a new Application Volume Group to be created and data will be lost.

Link copied to clipboard

The SAP System ID, maximum 3 characters, e.g. SH9. Changing this forces a new Application Volume Group to be created and data will be lost.

Link copied to clipboard

Volume group description. Changing this forces a new Application Volume Group to be created and data will be lost.

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
val location: Output<String>

The Azure Region where the Application Volume Group should exist. Changing this forces a new Application Volume Group to be created and data will be lost.

Link copied to clipboard
val name: Output<String>

The name which should be used for this Application Volume Group. Changing this forces a new Application Volume Group to be created and data will be lost.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

The name of the Resource Group where the Application Volume Group should exist. Changing this forces a new Application Volume Group to be created and data will be lost.

Link copied to clipboard
val urn: Output<String>
Link copied to clipboard

One or more volume blocks as defined below.