InstanceArgs

data class InstanceArgs(val accountPassword: Output<String>? = null, val autoRenew: Output<Boolean>? = null, val backupInterval: Output<String>? = null, val backupPeriods: Output<List<String>>? = null, val backupRetentionPeriod: Output<Int>? = null, val backupTime: Output<String>? = null, val cloudDiskEncryptionKey: Output<String>? = null, val dbInstanceClass: Output<String>? = null, val dbInstanceStorage: Output<Int>? = null, val effectiveTime: Output<String>? = null, val encrypted: Output<Boolean>? = null, val encryptionKey: Output<String>? = null, val encryptorName: Output<String>? = null, val engineVersion: Output<String>? = null, val hiddenZoneId: Output<String>? = null, val instanceChargeType: Output<String>? = null, val kmsEncryptedPassword: Output<String>? = null, val kmsEncryptionContext: Output<Map<String, Any>>? = null, val maintainEndTime: Output<String>? = null, val maintainStartTime: Output<String>? = null, val name: Output<String>? = null, val networkType: Output<String>? = null, val orderType: Output<String>? = null, val parameters: Output<List<InstanceParameterArgs>>? = null, val period: Output<Int>? = null, val readonlyReplicas: Output<Int>? = null, val replicationFactor: Output<Int>? = null, val resourceGroupId: Output<String>? = null, val roleArn: Output<String>? = null, val secondaryZoneId: Output<String>? = null, val securityGroupId: Output<String>? = null, val securityIpLists: Output<List<String>>? = null, val snapshotBackupType: Output<String>? = null, val sslAction: Output<String>? = null, val storageEngine: Output<String>? = null, val storageType: Output<String>? = null, val tags: Output<Map<String, Any>>? = null, val tdeStatus: Output<String>? = null, val vpcId: Output<String>? = null, val vswitchId: Output<String>? = null, val zoneId: Output<String>? = null) : ConvertibleToJava<InstanceArgs>

Provides a MongoDB instance resource supports replica set instances only. the MongoDB provides stable, reliable, and automatic scalable database services. It offers a full range of database solutions, such as disaster recovery, backup, recovery, monitoring, and alarms. You can see detail product introduction here

NOTE: Available since v1.37.0. NOTE: The following regions don't support create Classic network MongoDB instance. `cn-zhangjiakou`,`cn-huhehaote`,`ap-southeast-3`,`ap-southeast-5`,`me-east-1`,`ap-northeast-1`,`eu-west-1` NOTE: Create MongoDB instance or change instance type and storage would cost 5~10 minutes. Please make full preparation

Example Usage

Create a Mongodb instance

import * as pulumi from "@pulumi/pulumi";
import * as alicloud from "@pulumi/alicloud";
const config = new pulumi.Config();
const name = config.get("name") || "terraform-example";
const default = alicloud.mongodb.getZones({});
const index = _default.then(_default => _default.zones).length.then(length => length - 1);
const zoneId = _default.then(_default => _default.zones[index].id);
const defaultNetwork = new alicloud.vpc.Network("default", {
vpcName: name,
cidrBlock: "172.17.3.0/24",
});
const defaultSwitch = new alicloud.vpc.Switch("default", {
vswitchName: name,
cidrBlock: "172.17.3.0/24",
vpcId: defaultNetwork.id,
zoneId: zoneId,
});
const defaultInstance = new alicloud.mongodb.Instance("default", {
engineVersion: "4.2",
dbInstanceClass: "dds.mongo.mid",
dbInstanceStorage: 10,
vswitchId: defaultSwitch.id,
securityIpLists: [
"10.168.1.12",
"100.69.7.112",
],
name: name,
tags: {
Created: "TF",
For: "example",
},
});
import pulumi
import pulumi_alicloud as alicloud
config = pulumi.Config()
name = config.get("name")
if name is None:
name = "terraform-example"
default = alicloud.mongodb.get_zones()
index = len(default.zones) - 1
zone_id = default.zones[index].id
default_network = alicloud.vpc.Network("default",
vpc_name=name,
cidr_block="172.17.3.0/24")
default_switch = alicloud.vpc.Switch("default",
vswitch_name=name,
cidr_block="172.17.3.0/24",
vpc_id=default_network.id,
zone_id=zone_id)
default_instance = alicloud.mongodb.Instance("default",
engine_version="4.2",
db_instance_class="dds.mongo.mid",
db_instance_storage=10,
vswitch_id=default_switch.id,
security_ip_lists=[
"10.168.1.12",
"100.69.7.112",
],
name=name,
tags={
"Created": "TF",
"For": "example",
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;
return await Deployment.RunAsync(() =>
{
var config = new Config();
var name = config.Get("name") ?? "terraform-example";
var @default = AliCloud.MongoDB.GetZones.Invoke();
var index = @default.Apply(@default => @default.Apply(getZonesResult => getZonesResult.Zones)).Length.Apply(length => length - 1);
var zoneId = @default.Apply(@default => @default.Apply(getZonesResult => getZonesResult.Zones)[index].Id);
var defaultNetwork = new AliCloud.Vpc.Network("default", new()
{
VpcName = name,
CidrBlock = "172.17.3.0/24",
});
var defaultSwitch = new AliCloud.Vpc.Switch("default", new()
{
VswitchName = name,
CidrBlock = "172.17.3.0/24",
VpcId = defaultNetwork.Id,
ZoneId = zoneId,
});
var defaultInstance = new AliCloud.MongoDB.Instance("default", new()
{
EngineVersion = "4.2",
DbInstanceClass = "dds.mongo.mid",
DbInstanceStorage = 10,
VswitchId = defaultSwitch.Id,
SecurityIpLists = new[]
{
"10.168.1.12",
"100.69.7.112",
},
Name = name,
Tags =
{
{ "Created", "TF" },
{ "For", "example" },
},
});
});
package main
import (
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/mongodb"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/vpc"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
name := "terraform-example"
if param := cfg.Get("name"); param != "" {
name = param
}
_default, err := mongodb.GetZones(ctx, nil, nil)
if err != nil {
return err
}
index := len(_default.Zones) - 1
zoneId := _default.Zones[index].Id
defaultNetwork, err := vpc.NewNetwork(ctx, "default", &vpc.NetworkArgs{
VpcName: pulumi.String(name),
CidrBlock: pulumi.String("172.17.3.0/24"),
})
if err != nil {
return err
}
defaultSwitch, err := vpc.NewSwitch(ctx, "default", &vpc.SwitchArgs{
VswitchName: pulumi.String(name),
CidrBlock: pulumi.String("172.17.3.0/24"),
VpcId: defaultNetwork.ID(),
ZoneId: pulumi.String(zoneId),
})
if err != nil {
return err
}
_, err = mongodb.NewInstance(ctx, "default", &mongodb.InstanceArgs{
EngineVersion: pulumi.String("4.2"),
DbInstanceClass: pulumi.String("dds.mongo.mid"),
DbInstanceStorage: pulumi.Int(10),
VswitchId: defaultSwitch.ID(),
SecurityIpLists: pulumi.StringArray{
pulumi.String("10.168.1.12"),
pulumi.String("100.69.7.112"),
},
Name: pulumi.String(name),
Tags: pulumi.Map{
"Created": pulumi.Any("TF"),
"For": pulumi.Any("example"),
},
})
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.alicloud.mongodb.MongodbFunctions;
import com.pulumi.alicloud.mongodb.inputs.GetZonesArgs;
import com.pulumi.alicloud.vpc.Network;
import com.pulumi.alicloud.vpc.NetworkArgs;
import com.pulumi.alicloud.vpc.Switch;
import com.pulumi.alicloud.vpc.SwitchArgs;
import com.pulumi.alicloud.mongodb.Instance;
import com.pulumi.alicloud.mongodb.InstanceArgs;
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) {
final var config = ctx.config();
final var name = config.get("name").orElse("terraform-example");
final var default = MongodbFunctions.getZones();
final var index = default_.zones().length() - 1;
final var zoneId = default_.zones()[index].id();
var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
.vpcName(name)
.cidrBlock("172.17.3.0/24")
.build());
var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
.vswitchName(name)
.cidrBlock("172.17.3.0/24")
.vpcId(defaultNetwork.id())
.zoneId(zoneId)
.build());
var defaultInstance = new Instance("defaultInstance", InstanceArgs.builder()
.engineVersion("4.2")
.dbInstanceClass("dds.mongo.mid")
.dbInstanceStorage(10)
.vswitchId(defaultSwitch.id())
.securityIpLists(
"10.168.1.12",
"100.69.7.112")
.name(name)
.tags(Map.ofEntries(
Map.entry("Created", "TF"),
Map.entry("For", "example")
))
.build());
}
}

Module Support

You can use to the existing mongodb module to create a MongoDB instance resource one-click.

Import

MongoDB instance can be imported using the id, e.g.

$ pulumi import alicloud:mongodb/instance:Instance example dds-bp1291daeda44194

Constructors

Link copied to clipboard
fun InstanceArgs(accountPassword: Output<String>? = null, autoRenew: Output<Boolean>? = null, backupInterval: Output<String>? = null, backupPeriods: Output<List<String>>? = null, backupRetentionPeriod: Output<Int>? = null, backupTime: Output<String>? = null, cloudDiskEncryptionKey: Output<String>? = null, dbInstanceClass: Output<String>? = null, dbInstanceStorage: Output<Int>? = null, effectiveTime: Output<String>? = null, encrypted: Output<Boolean>? = null, encryptionKey: Output<String>? = null, encryptorName: Output<String>? = null, engineVersion: Output<String>? = null, hiddenZoneId: Output<String>? = null, instanceChargeType: Output<String>? = null, kmsEncryptedPassword: Output<String>? = null, kmsEncryptionContext: Output<Map<String, Any>>? = null, maintainEndTime: Output<String>? = null, maintainStartTime: Output<String>? = null, name: Output<String>? = null, networkType: Output<String>? = null, orderType: Output<String>? = null, parameters: Output<List<InstanceParameterArgs>>? = null, period: Output<Int>? = null, readonlyReplicas: Output<Int>? = null, replicationFactor: Output<Int>? = null, resourceGroupId: Output<String>? = null, roleArn: Output<String>? = null, secondaryZoneId: Output<String>? = null, securityGroupId: Output<String>? = null, securityIpLists: Output<List<String>>? = null, snapshotBackupType: Output<String>? = null, sslAction: Output<String>? = null, storageEngine: Output<String>? = null, storageType: Output<String>? = null, tags: Output<Map<String, Any>>? = null, tdeStatus: Output<String>? = null, vpcId: Output<String>? = null, vswitchId: Output<String>? = null, zoneId: Output<String>? = null)

Functions

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

Properties

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

Password of the root account. It is a string of 6 to 32 characters and is composed of letters, numbers, and underlines.

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

Auto renew for prepaid. Default value: false. Valid values: true, false.

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

The frequency at which high-frequency backups are created. Valid values: -1, 15, 30, 60, 120, 180, 240, 360, 480, 720.

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

MongoDB Instance backup period. It is required when backup_time was existed. Valid values: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday. Default to Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.

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

The retention period of full backups.

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

MongoDB instance backup time. It is required when backup_period was existed. In the format of HH:mmZ- HH:mmZ. Time setting interval is one hour. If not set, the system will return a default, like "23:00Z-24:00Z".

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

The ID of the encryption key.

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

Instance specification. see Instance specifications.

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

User-defined DB instance storage space.Unit: GB. Value range:

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

The time when the changed configurations take effect. Valid values: Immediately, MaintainTime.

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

Whether to enable cloud disk encryption. Default value: false. Valid values: true, false.

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

The ID of the custom key.

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

The encryption method. NOTE: encryptor_name is valid only when tde_status is set to enabled.

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

Database version. Value options can refer to the latest docs CreateDBInstance EngineVersion.

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

Configure the zone where the hidden node is located to deploy multiple zones. NOTE: This parameter value cannot be the same as zone_id and secondary_zone_id parameter values.

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

The billing method of the instance. Default value: PostPaid. Valid values: PrePaid, PostPaid. NOTE: It can be modified from PostPaid to PrePaid after version 1.63.0.

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

An KMS encrypts password used to a instance. If the account_password is filled in, this field will be ignored.

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

An KMS encryption context used to decrypt kms_encrypted_password before creating or updating instance with kms_encrypted_password. See Encryption Context. It is valid when kms_encrypted_password is set.

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

The end time of the operation and maintenance time period of the instance, in the format of HH:mmZ (UTC time).

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

The start time of the operation and maintenance time period of the instance, in the format of HH:mmZ (UTC time).

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

The name of DB instance. It must be 2 to 256 characters in length.

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

The network type of the instance. Valid values:Classic, VPC.

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

The type of configuration changes performed. Default value: DOWNGRADE. Valid values:

Link copied to clipboard
val parameters: Output<List<InstanceParameterArgs>>? = null

Set of parameters needs to be set after mongodb instance was launched. See parameters below.

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

The duration that you will buy DB instance (in month). It is valid when instance_charge_type is PrePaid. Default value: 1. Valid values: 1~9, 12, 24, 36.

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

The number of read-only nodes in the replica set instance. Default value: 0. Valid values: 0 to 5.

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

Number of replica set nodes. Valid values: 1, 3, 5, 7.

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

The ID of the Resource Group.

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

The Alibaba Cloud Resource Name (ARN) of the specified Resource Access Management (RAM) role.

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

Configure the available area where the slave node (Secondary node) is located to realize multi-available area deployment. NOTE: This parameter value cannot be the same as zone_id and hidden_zone_id parameter values.

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

The Security Group ID of ECS.

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

List of IP addresses allowed to access all databases of an instance. The list contains up to 1,000 IP addresses, separated by commas. Supported formats include 0.0.0.0/0, 10.23.12.24 (IP), and 10.23.12.24/24 (Classless Inter-Domain Routing (CIDR) mode. /24 represents the length of the prefix in an IP address. The range of the prefix length is 1,32).

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

The snapshot backup type. Default value: Standard. Valid values:

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

Actions performed on SSL functions. Valid values:

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

The storage engine of the instance. Default value: WiredTiger. Valid values: WiredTiger, RocksDB.

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

The storage type of the instance. Valid values: cloud_essd1, cloud_essd2, cloud_essd3, local_ssd.

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

A mapping of tags to assign to the resource.

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

The TDE(Transparent Data Encryption) status. Valid values: enabled.

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

The ID of the VPC. NOTE: vpc_id is valid only when network_type is set to VPC.

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

The virtual switch ID to launch DB instances in one VPC.

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

The Zone to launch the DB instance. it supports multiple zone. If it is a multi-zone and vswitch_id is specified, the vswitch must in one of them. The multiple zone ID can be retrieved by setting multi to "true" in the data source alicloud.getZones.