Volume Group Sap Hana Args
data class VolumeGroupSapHanaArgs(val accountName: Output<String>? = null, val applicationIdentifier: Output<String>? = null, val groupDescription: Output<String>? = null, val location: Output<String>? = null, val name: Output<String>? = null, val resourceGroupName: Output<String>? = null, val volumes: Output<List<VolumeGroupSapHanaVolumeArgs>>? = null) : ConvertibleToJava<VolumeGroupSapHanaArgs>
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,
],
});
Content copied to clipboard
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,
]))
Content copied to clipboard
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,
},
});
});
Content copied to clipboard
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
})
}
Content copied to clipboard
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)
.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)
.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)
.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());
}
}
Content copied to clipboard
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}
Content copied to clipboard
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
Content copied to clipboard
Constructors
Link copied to clipboard
constructor(accountName: Output<String>? = null, applicationIdentifier: Output<String>? = null, groupDescription: Output<String>? = null, location: Output<String>? = null, name: Output<String>? = null, resourceGroupName: Output<String>? = null, volumes: Output<List<VolumeGroupSapHanaVolumeArgs>>? = null)
Properties
Link copied to clipboard
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
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
One or more volume
blocks as defined below. //////