DatabaseInstanceArgs

data class DatabaseInstanceArgs(val clone: Output<DatabaseInstanceCloneArgs>? = null, val databaseVersion: Output<String>? = null, val deletionProtection: Output<Boolean>? = null, val encryptionKeyName: Output<String>? = null, val maintenanceVersion: Output<String>? = null, val masterInstanceName: Output<String>? = null, val name: Output<String>? = null, val project: Output<String>? = null, val region: Output<String>? = null, val replicaConfiguration: Output<DatabaseInstanceReplicaConfigurationArgs>? = null, val restoreBackupContext: Output<DatabaseInstanceRestoreBackupContextArgs>? = null, val rootPassword: Output<String>? = null, val settings: Output<DatabaseInstanceSettingsArgs>? = null) : ConvertibleToJava<DatabaseInstanceArgs>

Example Usage

SQL Second Generation Instance

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.sql.DatabaseInstance;
import com.pulumi.gcp.sql.DatabaseInstanceArgs;
import com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;
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 main = new DatabaseInstance("main", DatabaseInstanceArgs.builder()
.databaseVersion("POSTGRES_14")
.region("us-central1")
.settings(DatabaseInstanceSettingsArgs.builder()
.tier("db-f1-micro")
.build())
.build());
}
}

Private IP Instance

NOTE: For private IP instance setup, note that the gcp.sql.DatabaseInstance does not actually interpolate values from gcp.servicenetworking.Connection. You must explicitly add a depends_onreference as shown below.

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.Network;
import com.pulumi.gcp.compute.NetworkArgs;
import com.pulumi.gcp.compute.GlobalAddress;
import com.pulumi.gcp.compute.GlobalAddressArgs;
import com.pulumi.gcp.servicenetworking.Connection;
import com.pulumi.gcp.servicenetworking.ConnectionArgs;
import com.pulumi.random.RandomId;
import com.pulumi.random.RandomIdArgs;
import com.pulumi.gcp.sql.DatabaseInstance;
import com.pulumi.gcp.sql.DatabaseInstanceArgs;
import com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;
import com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;
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 privateNetwork = new Network("privateNetwork", NetworkArgs.Empty, CustomResourceOptions.builder()
.provider(google_beta)
.build());
var privateIpAddress = new GlobalAddress("privateIpAddress", GlobalAddressArgs.builder()
.purpose("VPC_PEERING")
.addressType("INTERNAL")
.prefixLength(16)
.network(privateNetwork.id())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
var privateVpcConnection = new Connection("privateVpcConnection", ConnectionArgs.builder()
.network(privateNetwork.id())
.service("servicenetworking.googleapis.com")
.reservedPeeringRanges(privateIpAddress.name())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
var dbNameSuffix = new RandomId("dbNameSuffix", RandomIdArgs.builder()
.byteLength(4)
.build());
var instance = new DatabaseInstance("instance", DatabaseInstanceArgs.builder()
.region("us-central1")
.databaseVersion("MYSQL_5_7")
.settings(DatabaseInstanceSettingsArgs.builder()
.tier("db-f1-micro")
.ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()
.ipv4Enabled(false)
.privateNetwork(privateNetwork.id())
.build())
.build())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.dependsOn(privateVpcConnection)
.build());
}
}

Import

Database instances can be imported using one of any of these accepted formats

$ pulumi import gcp:sql/databaseInstance:DatabaseInstance main projects/{{project}}/instances/{{name}}
$ pulumi import gcp:sql/databaseInstance:DatabaseInstance main {{project}}/{{name}}
$ pulumi import gcp:sql/databaseInstance:DatabaseInstance main {{name}}

config and set on the server. When importing, double-check that your config has all the fields set that you expect- just seeing no diff isn't sufficient to know that your config could reproduce the imported resource.

Constructors

Link copied to clipboard
fun DatabaseInstanceArgs(clone: Output<DatabaseInstanceCloneArgs>? = null, databaseVersion: Output<String>? = null, deletionProtection: Output<Boolean>? = null, encryptionKeyName: Output<String>? = null, maintenanceVersion: Output<String>? = null, masterInstanceName: Output<String>? = null, name: Output<String>? = null, project: Output<String>? = null, region: Output<String>? = null, replicaConfiguration: Output<DatabaseInstanceReplicaConfigurationArgs>? = null, restoreBackupContext: Output<DatabaseInstanceRestoreBackupContextArgs>? = null, rootPassword: Output<String>? = null, settings: Output<DatabaseInstanceSettingsArgs>? = null)

Functions

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

Properties

Link copied to clipboard
val clone: Output<DatabaseInstanceCloneArgs>? = null

Configuration for creating a new instance as a clone of another instance.

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

The MySQL, PostgreSQL or SQL Server version to use. Supported values include MYSQL_5_6, MYSQL_5_7, MYSQL_8_0, POSTGRES_9_6,POSTGRES_10, POSTGRES_11, POSTGRES_12, POSTGRES_13, POSTGRES_14, SQLSERVER_2017_STANDARD, SQLSERVER_2017_ENTERPRISE, SQLSERVER_2017_EXPRESS, SQLSERVER_2017_WEB. SQLSERVER_2019_STANDARD, SQLSERVER_2019_ENTERPRISE, SQLSERVER_2019_EXPRESS, SQLSERVER_2019_WEB. Database Version Policies includes an up-to-date reference of supported versions.

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

Used to block Terraform from deleting a SQL Instance. Defaults to true.

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

The current software version on the instance. This attribute can not be set during creation. Refer to available_maintenance_versions attribute to see what maintenance_version are available for upgrade. When this attribute gets updated, it will cause an instance restart. Setting a maintenance_version value that is older than the current one on the instance will be ignored.

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

The name of the existing instance that will act as the master in the replication setup. Note, this requires the master to have binary_log_enabled set, as well as existing backups.

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

The name of the instance. If the name is left blank, Terraform will randomly generate one when the instance is first created. This is done because after a name is used, it cannot be reused for up to one week.

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

The ID of the project in which the resource belongs. If it is not provided, the provider project is used.

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

The region the instance will sit in. If a region is not provided in the resource definition, the provider region will be used instead.

Link copied to clipboard

The configuration for replication. The configuration is detailed below. Valid only for MySQL instances.

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

Initial root password. Can be updated. Required for MS SQL Server.

Link copied to clipboard

The settings to use for the database. The configuration is detailed below. Required if clone is not set.