CassandraDatacenterArgs

data class CassandraDatacenterArgs(val availabilityZonesEnabled: Output<Boolean>? = null, val backupStorageCustomerKeyUri: Output<String>? = null, val base64EncodedYamlFragment: Output<String>? = null, val cassandraClusterId: Output<String>? = null, val delegatedManagementSubnetId: Output<String>? = null, val diskCount: Output<Int>? = null, val diskSku: Output<String>? = null, val location: Output<String>? = null, val managedDiskCustomerKeyUri: Output<String>? = null, val name: Output<String>? = null, val nodeCount: Output<Int>? = null, val skuName: Output<String>? = null) : ConvertibleToJava<CassandraDatacenterArgs>

Manages a Cassandra Datacenter.

Note: In order for the Azure Managed Instances for Apache Cassandra to work properly the product requires the Azure Cosmos DB Application ID to be present and working in your tenant. If the Azure Cosmos DB Application ID is missing in your environment you will need to have an administrator of your tenant run the following command to add the Azure Cosmos DB Application ID to your tenant:

New-AzADServicePrincipal -ApplicationId a232010e-820c-4083-83bb-3ace5fc29d0b

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure";
import * as azuread from "@pulumi/azuread";
const exampleResourceGroup = new azure.core.ResourceGroup("example", {
name: "accexample-rg",
location: "West Europe",
});
const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
name: "example-vnet",
location: exampleResourceGroup.location,
resourceGroupName: exampleResourceGroup.name,
addressSpaces: ["10&#46;0&#46;0&#46;0/16"],
});
const exampleSubnet = new azure.network.Subnet("example", {
name: "example-subnet",
resourceGroupName: exampleResourceGroup.name,
virtualNetworkName: exampleVirtualNetwork.name,
addressPrefixes: ["10&#46;0&#46;1&#46;0/24"],
});
const example = azuread.getServicePrincipal({
displayName: "Azure Cosmos DB",
});
const exampleAssignment = new azure.authorization.Assignment("example", {
scope: exampleVirtualNetwork.id,
roleDefinitionName: "Network Contributor",
principalId: example.then(example => example.objectId),
});
const exampleCassandraCluster = new azure.cosmosdb.CassandraCluster("example", {
name: "example-cluster",
resourceGroupName: exampleResourceGroup.name,
location: exampleResourceGroup.location,
delegatedManagementSubnetId: exampleSubnet.id,
defaultAdminPassword: "Password1234",
}, {
dependsOn: [exampleAssignment],
});
const exampleCassandraDatacenter = new azure.cosmosdb.CassandraDatacenter("example", {
name: "example-datacenter",
location: exampleCassandraCluster.location,
cassandraClusterId: exampleCassandraCluster.id,
delegatedManagementSubnetId: exampleSubnet.id,
nodeCount: 3,
diskCount: 4,
skuName: "Standard_DS14_v2",
availabilityZonesEnabled: false,
});
import pulumi
import pulumi_azure as azure
import pulumi_azuread as azuread
example_resource_group = azure.core.ResourceGroup("example",
name="accexample-rg",
location="West Europe")
example_virtual_network = azure.network.VirtualNetwork("example",
name="example-vnet",
location=example_resource_group.location,
resource_group_name=example_resource_group.name,
address_spaces=["10&#46;0&#46;0&#46;0/16"])
example_subnet = azure.network.Subnet("example",
name="example-subnet",
resource_group_name=example_resource_group.name,
virtual_network_name=example_virtual_network.name,
address_prefixes=["10&#46;0&#46;1&#46;0/24"])
example = azuread.get_service_principal(display_name="Azure Cosmos DB")
example_assignment = azure.authorization.Assignment("example",
scope=example_virtual_network.id,
role_definition_name="Network Contributor",
principal_id=example.object_id)
example_cassandra_cluster = azure.cosmosdb.CassandraCluster("example",
name="example-cluster",
resource_group_name=example_resource_group.name,
location=example_resource_group.location,
delegated_management_subnet_id=example_subnet.id,
default_admin_password="Password1234",
opts = pulumi.ResourceOptions(depends_on=[example_assignment]))
example_cassandra_datacenter = azure.cosmosdb.CassandraDatacenter("example",
name="example-datacenter",
location=example_cassandra_cluster.location,
cassandra_cluster_id=example_cassandra_cluster.id,
delegated_management_subnet_id=example_subnet.id,
node_count=3,
disk_count=4,
sku_name="Standard_DS14_v2",
availability_zones_enabled=False)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Azure = Pulumi.Azure;
using AzureAD = Pulumi.AzureAD;
return await Deployment.RunAsync(() =>
{
var exampleResourceGroup = new Azure.Core.ResourceGroup("example", new()
{
Name = "accexample-rg",
Location = "West Europe",
});
var exampleVirtualNetwork = new Azure.Network.VirtualNetwork("example", new()
{
Name = "example-vnet",
Location = exampleResourceGroup.Location,
ResourceGroupName = exampleResourceGroup.Name,
AddressSpaces = new[]
{
"10.0.0.0/16",
},
});
var exampleSubnet = new Azure.Network.Subnet("example", new()
{
Name = "example-subnet",
ResourceGroupName = exampleResourceGroup.Name,
VirtualNetworkName = exampleVirtualNetwork.Name,
AddressPrefixes = new[]
{
"10.0.1.0/24",
},
});
var example = AzureAD.GetServicePrincipal.Invoke(new()
{
DisplayName = "Azure Cosmos DB",
});
var exampleAssignment = new Azure.Authorization.Assignment("example", new()
{
Scope = exampleVirtualNetwork.Id,
RoleDefinitionName = "Network Contributor",
PrincipalId = example.Apply(getServicePrincipalResult => getServicePrincipalResult.ObjectId),
});
var exampleCassandraCluster = new Azure.CosmosDB.CassandraCluster("example", new()
{
Name = "example-cluster",
ResourceGroupName = exampleResourceGroup.Name,
Location = exampleResourceGroup.Location,
DelegatedManagementSubnetId = exampleSubnet.Id,
DefaultAdminPassword = "Password1234",
}, new CustomResourceOptions
{
DependsOn =
{
exampleAssignment,
},
});
var exampleCassandraDatacenter = new Azure.CosmosDB.CassandraDatacenter("example", new()
{
Name = "example-datacenter",
Location = exampleCassandraCluster.Location,
CassandraClusterId = exampleCassandraCluster.Id,
DelegatedManagementSubnetId = exampleSubnet.Id,
NodeCount = 3,
DiskCount = 4,
SkuName = "Standard_DS14_v2",
AvailabilityZonesEnabled = false,
});
});
package main
import (
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/cosmosdb"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network"
"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
exampleResourceGroup, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
Name: pulumi.String("accexample-rg"),
Location: pulumi.String("West Europe"),
})
if err != nil {
return err
}
exampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, "example", &network.VirtualNetworkArgs{
Name: pulumi.String("example-vnet"),
Location: exampleResourceGroup.Location,
ResourceGroupName: exampleResourceGroup.Name,
AddressSpaces: pulumi.StringArray{
pulumi.String("10.0.0.0/16"),
},
})
if err != nil {
return err
}
exampleSubnet, err := network.NewSubnet(ctx, "example", &network.SubnetArgs{
Name: pulumi.String("example-subnet"),
ResourceGroupName: exampleResourceGroup.Name,
VirtualNetworkName: exampleVirtualNetwork.Name,
AddressPrefixes: pulumi.StringArray{
pulumi.String("10.0.1.0/24"),
},
})
if err != nil {
return err
}
example, err := azuread.LookupServicePrincipal(ctx, &azuread.LookupServicePrincipalArgs{
DisplayName: pulumi.StringRef("Azure Cosmos DB"),
}, nil)
if err != nil {
return err
}
exampleAssignment, err := authorization.NewAssignment(ctx, "example", &authorization.AssignmentArgs{
Scope: exampleVirtualNetwork.ID(),
RoleDefinitionName: pulumi.String("Network Contributor"),
PrincipalId: pulumi.String(example.ObjectId),
})
if err != nil {
return err
}
exampleCassandraCluster, err := cosmosdb.NewCassandraCluster(ctx, "example", &cosmosdb.CassandraClusterArgs{
Name: pulumi.String("example-cluster"),
ResourceGroupName: exampleResourceGroup.Name,
Location: exampleResourceGroup.Location,
DelegatedManagementSubnetId: exampleSubnet.ID(),
DefaultAdminPassword: pulumi.String("Password1234"),
}, pulumi.DependsOn([]pulumi.Resource{
exampleAssignment,
}))
if err != nil {
return err
}
_, err = cosmosdb.NewCassandraDatacenter(ctx, "example", &cosmosdb.CassandraDatacenterArgs{
Name: pulumi.String("example-datacenter"),
Location: exampleCassandraCluster.Location,
CassandraClusterId: exampleCassandraCluster.ID(),
DelegatedManagementSubnetId: exampleSubnet.ID(),
NodeCount: pulumi.Int(3),
DiskCount: pulumi.Int(4),
SkuName: pulumi.String("Standard_DS14_v2"),
AvailabilityZonesEnabled: pulumi.Bool(false),
})
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.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.azuread.AzureadFunctions;
import com.pulumi.azuread.inputs.GetServicePrincipalArgs;
import com.pulumi.azure.authorization.Assignment;
import com.pulumi.azure.authorization.AssignmentArgs;
import com.pulumi.azure.cosmosdb.CassandraCluster;
import com.pulumi.azure.cosmosdb.CassandraClusterArgs;
import com.pulumi.azure.cosmosdb.CassandraDatacenter;
import com.pulumi.azure.cosmosdb.CassandraDatacenterArgs;
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 exampleResourceGroup = new ResourceGroup("exampleResourceGroup", ResourceGroupArgs.builder()
.name("accexample-rg")
.location("West Europe")
.build());
var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
.name("example-vnet")
.location(exampleResourceGroup.location())
.resourceGroupName(exampleResourceGroup.name())
.addressSpaces("10.0.0.0/16")
.build());
var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
.name("example-subnet")
.resourceGroupName(exampleResourceGroup.name())
.virtualNetworkName(exampleVirtualNetwork.name())
.addressPrefixes("10.0.1.0/24")
.build());
final var example = AzureadFunctions.getServicePrincipal(GetServicePrincipalArgs.builder()
.displayName("Azure Cosmos DB")
.build());
var exampleAssignment = new Assignment("exampleAssignment", AssignmentArgs.builder()
.scope(exampleVirtualNetwork.id())
.roleDefinitionName("Network Contributor")
.principalId(example.objectId())
.build());
var exampleCassandraCluster = new CassandraCluster("exampleCassandraCluster", CassandraClusterArgs.builder()
.name("example-cluster")
.resourceGroupName(exampleResourceGroup.name())
.location(exampleResourceGroup.location())
.delegatedManagementSubnetId(exampleSubnet.id())
.defaultAdminPassword("Password1234")
.build(), CustomResourceOptions.builder()
.dependsOn(exampleAssignment)
.build());
var exampleCassandraDatacenter = new CassandraDatacenter("exampleCassandraDatacenter", CassandraDatacenterArgs.builder()
.name("example-datacenter")
.location(exampleCassandraCluster.location())
.cassandraClusterId(exampleCassandraCluster.id())
.delegatedManagementSubnetId(exampleSubnet.id())
.nodeCount(3)
.diskCount(4)
.skuName("Standard_DS14_v2")
.availabilityZonesEnabled(false)
.build());
}
}
resources:
exampleResourceGroup:
type: azure:core:ResourceGroup
name: example
properties:
name: accexample-rg
location: West Europe
exampleVirtualNetwork:
type: azure:network:VirtualNetwork
name: example
properties:
name: example-vnet
location: ${exampleResourceGroup.location}
resourceGroupName: ${exampleResourceGroup.name}
addressSpaces:
- 10.0.0.0/16
exampleSubnet:
type: azure:network:Subnet
name: example
properties:
name: example-subnet
resourceGroupName: ${exampleResourceGroup.name}
virtualNetworkName: ${exampleVirtualNetwork.name}
addressPrefixes:
- 10.0.1.0/24
exampleAssignment:
type: azure:authorization:Assignment
name: example
properties:
scope: ${exampleVirtualNetwork.id}
roleDefinitionName: Network Contributor
principalId: ${example.objectId}
exampleCassandraCluster:
type: azure:cosmosdb:CassandraCluster
name: example
properties:
name: example-cluster
resourceGroupName: ${exampleResourceGroup.name}
location: ${exampleResourceGroup.location}
delegatedManagementSubnetId: ${exampleSubnet.id}
defaultAdminPassword: Password1234
options:
dependsOn:
- ${exampleAssignment}
exampleCassandraDatacenter:
type: azure:cosmosdb:CassandraDatacenter
name: example
properties:
name: example-datacenter
location: ${exampleCassandraCluster.location}
cassandraClusterId: ${exampleCassandraCluster.id}
delegatedManagementSubnetId: ${exampleSubnet.id}
nodeCount: 3
diskCount: 4
skuName: Standard_DS14_v2
availabilityZonesEnabled: false
variables:
example:
fn::invoke:
function: azuread:getServicePrincipal
arguments:
displayName: Azure Cosmos DB

Import

Cassandra Datacenters can be imported using the resource id, e.g.

$ pulumi import azure:cosmosdb/cassandraDatacenter:CassandraDatacenter example /subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DocumentDB/cassandraClusters/cluster1/dataCenters/dc1

Constructors

Link copied to clipboard
constructor(availabilityZonesEnabled: Output<Boolean>? = null, backupStorageCustomerKeyUri: Output<String>? = null, base64EncodedYamlFragment: Output<String>? = null, cassandraClusterId: Output<String>? = null, delegatedManagementSubnetId: Output<String>? = null, diskCount: Output<Int>? = null, diskSku: Output<String>? = null, location: Output<String>? = null, managedDiskCustomerKeyUri: Output<String>? = null, name: Output<String>? = null, nodeCount: Output<Int>? = null, skuName: Output<String>? = null)

Properties

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

Determines whether availability zones are enabled. Defaults to true.

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

The key URI of the customer key to use for the encryption of the backup Storage Account.

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

The fragment of the cassandra.yaml configuration file to be included in the cassandra.yaml for all nodes in this Cassandra Datacenter. The fragment should be Base64 encoded and only a subset of keys is allowed.

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

The ID of the Cassandra Cluster. Changing this forces a new Cassandra Datacenter to be created.

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

The ID of the delegated management subnet for this Cassandra Datacenter. Changing this forces a new Cassandra Datacenter to be created.

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

Determines the number of p30 disks that are attached to each node.

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

The Disk SKU that is used for this Cassandra Datacenter. Defaults to P30.

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

The Azure Region where the Cassandra Datacenter should exist. Changing this forces a new Cassandra Datacenter to be created.

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

The key URI of the customer key to use for the encryption of the Managed Disk.

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

The name which should be used for this Cassandra Datacenter. Changing this forces a new Cassandra Datacenter to be created.

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

The number of nodes the Cassandra Datacenter should have. The number should be equal or greater than 3. Defaults to 3.

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

Determines the selected sku.

Functions

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