@pulumi/digitalocean
Version:
A Pulumi package for creating and managing DigitalOcean cloud resources.
222 lines (221 loc) • 7.94 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
* Provides a DigitalOcean database user resource. When creating a new database cluster, a default admin user with name `doadmin` will be created. Then, this resource can be used to provide additional normal users inside the cluster.
*
* > **NOTE:** Any new users created will always have `normal` role, only the default user that comes with database cluster creation has `primary` role. Additional permissions must be managed manually.
*
* ## Example Usage
*
* ### Create a new PostgreSQL database user
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as digitalocean from "@pulumi/digitalocean";
*
* const postgres_example = new digitalocean.DatabaseCluster("postgres-example", {
* name: "example-postgres-cluster",
* engine: "pg",
* version: "15",
* size: digitalocean.DatabaseSlug.DB_1VPCU1GB,
* region: digitalocean.Region.NYC1,
* nodeCount: 1,
* });
* const user_example = new digitalocean.DatabaseUser("user-example", {
* clusterId: postgres_example.id,
* name: "foobar",
* });
* ```
*
* ### Create a new user for a PostgreSQL database replica
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as digitalocean from "@pulumi/digitalocean";
*
* const postgres_example = new digitalocean.DatabaseCluster("postgres-example", {
* name: "example-postgres-cluster",
* engine: "pg",
* version: "15",
* size: digitalocean.DatabaseSlug.DB_1VPCU1GB,
* region: digitalocean.Region.NYC1,
* nodeCount: 1,
* });
* const replica_example = new digitalocean.DatabaseReplica("replica-example", {
* clusterId: postgres_example.id,
* name: "replica-example",
* size: digitalocean.DatabaseSlug.DB_1VPCU1GB,
* region: digitalocean.Region.NYC1,
* });
* const user_example = new digitalocean.DatabaseUser("user-example", {
* clusterId: replica_example.uuid,
* name: "foobar",
* });
* ```
*
* ### Create a new user for a Kafka database cluster
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as digitalocean from "@pulumi/digitalocean";
*
* const kafka_example = new digitalocean.DatabaseCluster("kafka-example", {
* name: "example-kafka-cluster",
* engine: "kafka",
* version: "3.5",
* size: "db-s-2vcpu-2gb",
* region: digitalocean.Region.NYC1,
* nodeCount: 3,
* });
* const foobarTopic = new digitalocean.DatabaseKafkaTopic("foobar_topic", {
* clusterId: foobar.id,
* name: "topic-1",
* });
* const foobarUser = new digitalocean.DatabaseUser("foobar_user", {
* clusterId: foobar.id,
* name: "example-user",
* settings: [{
* acls: [
* {
* topic: "topic-1",
* permission: "produce",
* },
* {
* topic: "topic-2",
* permission: "produceconsume",
* },
* {
* topic: "topic-*",
* permission: "consume",
* },
* ],
* }],
* });
* ```
*
* ## Import
*
* Database user can be imported using the `id` of the source database cluster
*
* and the `name` of the user joined with a comma. For example:
*
* ```sh
* $ pulumi import digitalocean:index/databaseUser:DatabaseUser user-example 245bcfd0-7f31-4ce6-a2bc-475a116cca97,foobar
* ```
*/
export declare class DatabaseUser extends pulumi.CustomResource {
/**
* Get an existing DatabaseUser resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: DatabaseUserState, opts?: pulumi.CustomResourceOptions): DatabaseUser;
/**
* Returns true if the given object is an instance of DatabaseUser. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj: any): obj is DatabaseUser;
/**
* Access certificate for TLS client authentication. (Kafka only)
*/
readonly accessCert: pulumi.Output<string>;
/**
* Access key for TLS client authentication. (Kafka only)
*/
readonly accessKey: pulumi.Output<string>;
/**
* The ID of the original source database cluster.
*/
readonly clusterId: pulumi.Output<string>;
/**
* The authentication method to use for connections to the MySQL user account. The valid values are `mysqlNativePassword` or `cachingSha2Password` (this is the default).
*/
readonly mysqlAuthPlugin: pulumi.Output<string | undefined>;
/**
* The name for the database user.
*/
readonly name: pulumi.Output<string>;
/**
* Password for the database user.
*/
readonly password: pulumi.Output<string>;
/**
* Role for the database user. The value will be either "primary" or "normal".
*/
readonly role: pulumi.Output<string>;
/**
* Contains optional settings for the user.
* The `settings` block is documented below.
*/
readonly settings: pulumi.Output<outputs.DatabaseUserSetting[] | undefined>;
/**
* Create a DatabaseUser resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: DatabaseUserArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering DatabaseUser resources.
*/
export interface DatabaseUserState {
/**
* Access certificate for TLS client authentication. (Kafka only)
*/
accessCert?: pulumi.Input<string>;
/**
* Access key for TLS client authentication. (Kafka only)
*/
accessKey?: pulumi.Input<string>;
/**
* The ID of the original source database cluster.
*/
clusterId?: pulumi.Input<string>;
/**
* The authentication method to use for connections to the MySQL user account. The valid values are `mysqlNativePassword` or `cachingSha2Password` (this is the default).
*/
mysqlAuthPlugin?: pulumi.Input<string>;
/**
* The name for the database user.
*/
name?: pulumi.Input<string>;
/**
* Password for the database user.
*/
password?: pulumi.Input<string>;
/**
* Role for the database user. The value will be either "primary" or "normal".
*/
role?: pulumi.Input<string>;
/**
* Contains optional settings for the user.
* The `settings` block is documented below.
*/
settings?: pulumi.Input<pulumi.Input<inputs.DatabaseUserSetting>[]>;
}
/**
* The set of arguments for constructing a DatabaseUser resource.
*/
export interface DatabaseUserArgs {
/**
* The ID of the original source database cluster.
*/
clusterId: pulumi.Input<string>;
/**
* The authentication method to use for connections to the MySQL user account. The valid values are `mysqlNativePassword` or `cachingSha2Password` (this is the default).
*/
mysqlAuthPlugin?: pulumi.Input<string>;
/**
* The name for the database user.
*/
name?: pulumi.Input<string>;
/**
* Contains optional settings for the user.
* The `settings` block is documented below.
*/
settings?: pulumi.Input<pulumi.Input<inputs.DatabaseUserSetting>[]>;
}