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 backupRetentionPolicyOnClusterDeletion: 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 enableBackupLog: Output<Int>? = 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, String>>? = null, val logBackupRetentionPeriod: Output<Int>? = 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 provisionedIops: 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, String>>? = 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, &mongodb.GetZonesArgs{}, nil)
if err != nil {
return err
}
index := pulumi.Float64(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.StringMap{
"Created": pulumi.String("TF"),
"For": pulumi.String("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
constructor(accountPassword: Output<String>? = null, autoRenew: Output<Boolean>? = null, backupInterval: Output<String>? = null, backupPeriods: Output<List<String>>? = null, backupRetentionPeriod: Output<Int>? = null, backupRetentionPolicyOnClusterDeletion: Output<Int>? = null, backupTime: Output<String>? = null, cloudDiskEncryptionKey: Output<String>? = null, dbInstanceClass: Output<String>? = null, dbInstanceStorage: Output<Int>? = null, effectiveTime: Output<String>? = null, enableBackupLog: Output<Int>? = 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, String>>? = null, logBackupRetentionPeriod: Output<Int>? = 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, provisionedIops: 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, String>>? = null, tdeStatus: Output<String>? = null, vpcId: Output<String>? = null, vswitchId: Output<String>? = null, zoneId: Output<String>? = null)

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

The backup retention policy configured for the instance. Valid values:

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 enableBackupLog: Output<Int>? = null

Specifies whether to enable the log backup feature. Valid values:

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. NOTE: From version 1.225.0, engine_version can be modified.

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, String>>? = 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 logBackupRetentionPeriod: Output<Int>? = null

The number of days for which log backups are retained. Valid values: 7 to 730. NOTE: log_backup_retention_period is valid only when enable_backup_log is set to 1.

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 provisionedIops: Output<Int>? = null

The provisioned IOPS. Valid values: 0 to 50000.

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, cloud_auto, local_ssd. NOTE: From version 1.229.0, storage_type can be modified. However, storage_type can only be modified to cloud_auto.

Link copied to clipboard
val tags: Output<Map<String, String>>? = 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.

Functions

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