@pulumi/gcp
Version:
A Pulumi package for creating and managing Google Cloud Platform resources.
906 lines (905 loc) • 33 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
* ## Example Usage
*
* ### Redis Cluster Ha
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const consumerNet = new gcp.compute.Network("consumer_net", {
* name: "my-network",
* autoCreateSubnetworks: false,
* });
* const consumerSubnet = new gcp.compute.Subnetwork("consumer_subnet", {
* name: "my-subnet",
* ipCidrRange: "10.0.0.248/29",
* region: "us-central1",
* network: consumerNet.id,
* });
* const _default = new gcp.networkconnectivity.ServiceConnectionPolicy("default", {
* name: "my-policy",
* location: "us-central1",
* serviceClass: "gcp-memorystore-redis",
* description: "my basic service connection policy",
* network: consumerNet.id,
* pscConfig: {
* subnetworks: [consumerSubnet.id],
* },
* });
* const cluster_ha = new gcp.redis.Cluster("cluster-ha", {
* name: "ha-cluster",
* shardCount: 3,
* pscConfigs: [{
* network: consumerNet.id,
* }],
* region: "us-central1",
* replicaCount: 1,
* nodeType: "REDIS_SHARED_CORE_NANO",
* transitEncryptionMode: "TRANSIT_ENCRYPTION_MODE_DISABLED",
* authorizationMode: "AUTH_MODE_DISABLED",
* redisConfigs: {
* "maxmemory-policy": "volatile-ttl",
* },
* deletionProtectionEnabled: true,
* zoneDistributionConfig: {
* mode: "MULTI_ZONE",
* },
* maintenancePolicy: {
* weeklyMaintenanceWindows: [{
* day: "MONDAY",
* startTime: {
* hours: 1,
* minutes: 0,
* seconds: 0,
* nanos: 0,
* },
* }],
* },
* }, {
* dependsOn: [_default],
* });
* ```
* ### Redis Cluster Ha Single Zone
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const consumerNet = new gcp.compute.Network("consumer_net", {
* name: "my-network",
* autoCreateSubnetworks: false,
* });
* const consumerSubnet = new gcp.compute.Subnetwork("consumer_subnet", {
* name: "my-subnet",
* ipCidrRange: "10.0.0.248/29",
* region: "us-central1",
* network: consumerNet.id,
* });
* const _default = new gcp.networkconnectivity.ServiceConnectionPolicy("default", {
* name: "my-policy",
* location: "us-central1",
* serviceClass: "gcp-memorystore-redis",
* description: "my basic service connection policy",
* network: consumerNet.id,
* pscConfig: {
* subnetworks: [consumerSubnet.id],
* },
* });
* const cluster_ha_single_zone = new gcp.redis.Cluster("cluster-ha-single-zone", {
* name: "ha-cluster-single-zone",
* shardCount: 3,
* pscConfigs: [{
* network: consumerNet.id,
* }],
* region: "us-central1",
* zoneDistributionConfig: {
* mode: "SINGLE_ZONE",
* zone: "us-central1-f",
* },
* maintenancePolicy: {
* weeklyMaintenanceWindows: [{
* day: "MONDAY",
* startTime: {
* hours: 1,
* minutes: 0,
* seconds: 0,
* nanos: 0,
* },
* }],
* },
* deletionProtectionEnabled: true,
* }, {
* dependsOn: [_default],
* });
* ```
* ### Redis Cluster Secondary
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const consumerNet = new gcp.compute.Network("consumer_net", {
* name: "mynetwork",
* autoCreateSubnetworks: false,
* });
* const primaryClusterConsumerSubnet = new gcp.compute.Subnetwork("primary_cluster_consumer_subnet", {
* name: "mysubnet-primary-cluster",
* ipCidrRange: "10.0.1.0/29",
* region: "us-east1",
* network: consumerNet.id,
* });
* const primaryClusterRegionScp = new gcp.networkconnectivity.ServiceConnectionPolicy("primary_cluster_region_scp", {
* name: "mypolicy-primary-cluster",
* location: "us-east1",
* serviceClass: "gcp-memorystore-redis",
* description: "Primary cluster service connection policy",
* network: consumerNet.id,
* pscConfig: {
* subnetworks: [primaryClusterConsumerSubnet.id],
* },
* });
* // Primary cluster
* const primaryCluster = new gcp.redis.Cluster("primary_cluster", {
* name: "my-primary-cluster",
* region: "us-east1",
* pscConfigs: [{
* network: consumerNet.id,
* }],
* authorizationMode: "AUTH_MODE_DISABLED",
* transitEncryptionMode: "TRANSIT_ENCRYPTION_MODE_DISABLED",
* shardCount: 3,
* redisConfigs: {
* "maxmemory-policy": "volatile-ttl",
* },
* nodeType: "REDIS_HIGHMEM_MEDIUM",
* persistenceConfig: {
* mode: "RDB",
* rdbConfig: {
* rdbSnapshotPeriod: "ONE_HOUR",
* rdbSnapshotStartTime: "2024-10-02T15:01:23Z",
* },
* },
* zoneDistributionConfig: {
* mode: "MULTI_ZONE",
* },
* replicaCount: 1,
* maintenancePolicy: {
* weeklyMaintenanceWindows: [{
* day: "MONDAY",
* startTime: {
* hours: 1,
* minutes: 0,
* seconds: 0,
* nanos: 0,
* },
* }],
* },
* deletionProtectionEnabled: true,
* }, {
* dependsOn: [primaryClusterRegionScp],
* });
* const secondaryClusterConsumerSubnet = new gcp.compute.Subnetwork("secondary_cluster_consumer_subnet", {
* name: "mysubnet-secondary-cluster",
* ipCidrRange: "10.0.2.0/29",
* region: "europe-west1",
* network: consumerNet.id,
* });
* const secondaryClusterRegionScp = new gcp.networkconnectivity.ServiceConnectionPolicy("secondary_cluster_region_scp", {
* name: "mypolicy-secondary-cluster",
* location: "europe-west1",
* serviceClass: "gcp-memorystore-redis",
* description: "Secondary cluster service connection policy",
* network: consumerNet.id,
* pscConfig: {
* subnetworks: [secondaryClusterConsumerSubnet.id],
* },
* });
* // Secondary cluster
* const secondaryCluster = new gcp.redis.Cluster("secondary_cluster", {
* name: "my-secondary-cluster",
* region: "europe-west1",
* pscConfigs: [{
* network: consumerNet.id,
* }],
* authorizationMode: "AUTH_MODE_DISABLED",
* transitEncryptionMode: "TRANSIT_ENCRYPTION_MODE_DISABLED",
* shardCount: 3,
* redisConfigs: {
* "maxmemory-policy": "volatile-ttl",
* },
* nodeType: "REDIS_HIGHMEM_MEDIUM",
* persistenceConfig: {
* mode: "RDB",
* rdbConfig: {
* rdbSnapshotPeriod: "ONE_HOUR",
* rdbSnapshotStartTime: "2024-10-02T15:01:23Z",
* },
* },
* zoneDistributionConfig: {
* mode: "MULTI_ZONE",
* },
* replicaCount: 2,
* maintenancePolicy: {
* weeklyMaintenanceWindows: [{
* day: "WEDNESDAY",
* startTime: {
* hours: 1,
* minutes: 0,
* seconds: 0,
* nanos: 0,
* },
* }],
* },
* deletionProtectionEnabled: true,
* crossClusterReplicationConfig: {
* clusterRole: "SECONDARY",
* primaryCluster: {
* cluster: primaryCluster.id,
* },
* },
* }, {
* dependsOn: [secondaryClusterRegionScp],
* });
* ```
* ### Redis Cluster Rdb
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const consumerNet = new gcp.compute.Network("consumer_net", {
* name: "my-network",
* autoCreateSubnetworks: false,
* });
* const consumerSubnet = new gcp.compute.Subnetwork("consumer_subnet", {
* name: "my-subnet",
* ipCidrRange: "10.0.0.248/29",
* region: "us-central1",
* network: consumerNet.id,
* });
* const _default = new gcp.networkconnectivity.ServiceConnectionPolicy("default", {
* name: "my-policy",
* location: "us-central1",
* serviceClass: "gcp-memorystore-redis",
* description: "my basic service connection policy",
* network: consumerNet.id,
* pscConfig: {
* subnetworks: [consumerSubnet.id],
* },
* });
* const cluster_rdb = new gcp.redis.Cluster("cluster-rdb", {
* name: "rdb-cluster",
* shardCount: 3,
* pscConfigs: [{
* network: consumerNet.id,
* }],
* region: "us-central1",
* replicaCount: 0,
* nodeType: "REDIS_SHARED_CORE_NANO",
* transitEncryptionMode: "TRANSIT_ENCRYPTION_MODE_DISABLED",
* authorizationMode: "AUTH_MODE_DISABLED",
* redisConfigs: {
* "maxmemory-policy": "volatile-ttl",
* },
* deletionProtectionEnabled: true,
* zoneDistributionConfig: {
* mode: "MULTI_ZONE",
* },
* maintenancePolicy: {
* weeklyMaintenanceWindows: [{
* day: "MONDAY",
* startTime: {
* hours: 1,
* minutes: 0,
* seconds: 0,
* nanos: 0,
* },
* }],
* },
* persistenceConfig: {
* mode: "RDB",
* rdbConfig: {
* rdbSnapshotPeriod: "ONE_HOUR",
* rdbSnapshotStartTime: "2024-10-02T15:01:23Z",
* },
* },
* }, {
* dependsOn: [_default],
* });
* ```
* ### Redis Cluster Aof
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const consumerNet = new gcp.compute.Network("consumer_net", {
* name: "my-network",
* autoCreateSubnetworks: false,
* });
* const consumerSubnet = new gcp.compute.Subnetwork("consumer_subnet", {
* name: "my-subnet",
* ipCidrRange: "10.0.0.248/29",
* region: "us-central1",
* network: consumerNet.id,
* });
* const _default = new gcp.networkconnectivity.ServiceConnectionPolicy("default", {
* name: "my-policy",
* location: "us-central1",
* serviceClass: "gcp-memorystore-redis",
* description: "my basic service connection policy",
* network: consumerNet.id,
* pscConfig: {
* subnetworks: [consumerSubnet.id],
* },
* });
* const cluster_aof = new gcp.redis.Cluster("cluster-aof", {
* name: "aof-cluster",
* shardCount: 3,
* pscConfigs: [{
* network: consumerNet.id,
* }],
* region: "us-central1",
* replicaCount: 0,
* nodeType: "REDIS_SHARED_CORE_NANO",
* transitEncryptionMode: "TRANSIT_ENCRYPTION_MODE_DISABLED",
* authorizationMode: "AUTH_MODE_DISABLED",
* redisConfigs: {
* "maxmemory-policy": "volatile-ttl",
* },
* deletionProtectionEnabled: true,
* zoneDistributionConfig: {
* mode: "MULTI_ZONE",
* },
* maintenancePolicy: {
* weeklyMaintenanceWindows: [{
* day: "MONDAY",
* startTime: {
* hours: 1,
* minutes: 0,
* seconds: 0,
* nanos: 0,
* },
* }],
* },
* persistenceConfig: {
* mode: "AOF",
* aofConfig: {
* appendFsync: "EVERYSEC",
* },
* },
* }, {
* dependsOn: [_default],
* });
* ```
* ### Redis Cluster Cmek
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const consumerNet = new gcp.compute.Network("consumer_net", {
* name: "my-network",
* autoCreateSubnetworks: false,
* });
* const consumerSubnet = new gcp.compute.Subnetwork("consumer_subnet", {
* name: "my-subnet",
* ipCidrRange: "10.0.0.248/29",
* region: "us-central1",
* network: consumerNet.id,
* });
* const _default = new gcp.networkconnectivity.ServiceConnectionPolicy("default", {
* name: "my-policy",
* location: "us-central1",
* serviceClass: "gcp-memorystore-redis",
* description: "my basic service connection policy",
* network: consumerNet.id,
* pscConfig: {
* subnetworks: [consumerSubnet.id],
* },
* });
* const cluster_cmek = new gcp.redis.Cluster("cluster-cmek", {
* name: "cmek-cluster",
* shardCount: 3,
* pscConfigs: [{
* network: consumerNet.id,
* }],
* kmsKey: "my-key",
* region: "us-central1",
* deletionProtectionEnabled: true,
* }, {
* dependsOn: [_default],
* });
* const project = gcp.organizations.getProject({});
* ```
*
* ## Import
*
* Cluster can be imported using any of these accepted formats:
*
* * `projects/{{project}}/locations/{{region}}/clusters/{{name}}`
*
* * `{{project}}/{{region}}/{{name}}`
*
* * `{{region}}/{{name}}`
*
* * `{{name}}`
*
* When using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:
*
* ```sh
* $ pulumi import gcp:redis/cluster:Cluster default projects/{{project}}/locations/{{region}}/clusters/{{name}}
* ```
*
* ```sh
* $ pulumi import gcp:redis/cluster:Cluster default {{project}}/{{region}}/{{name}}
* ```
*
* ```sh
* $ pulumi import gcp:redis/cluster:Cluster default {{region}}/{{name}}
* ```
*
* ```sh
* $ pulumi import gcp:redis/cluster:Cluster default {{name}}
* ```
*/
export declare class Cluster extends pulumi.CustomResource {
/**
* Get an existing Cluster 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?: ClusterState, opts?: pulumi.CustomResourceOptions): Cluster;
/**
* Returns true if the given object is an instance of Cluster. 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 Cluster;
/**
* Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster.
* Default value is `AUTH_MODE_DISABLED`.
* Possible values are: `AUTH_MODE_UNSPECIFIED`, `AUTH_MODE_IAM_AUTH`, `AUTH_MODE_DISABLED`.
*/
readonly authorizationMode: pulumi.Output<string | undefined>;
/**
* The automated backup config for a instance.
* Structure is documented below.
*/
readonly automatedBackupConfig: pulumi.Output<outputs.redis.ClusterAutomatedBackupConfig | undefined>;
/**
* The backup collection full resource name.
* Example: projects/{project}/locations/{location}/backupCollections/{collection}
*/
readonly backupCollection: pulumi.Output<string>;
/**
* The timestamp associated with the cluster creation request. A timestamp in
* RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional
* digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
*/
readonly createTime: pulumi.Output<string>;
/**
* Cross cluster replication config
* Structure is documented below.
*/
readonly crossClusterReplicationConfig: pulumi.Output<outputs.redis.ClusterCrossClusterReplicationConfig>;
/**
* Optional. Indicates if the cluster is deletion protected or not.
* If the value if set to true, any delete cluster operation will fail.
* Default value is true.
*/
readonly deletionProtectionEnabled: pulumi.Output<boolean | undefined>;
/**
* Output only. Endpoints created on each given network,
* for Redis clients to connect to the cluster.
* Currently only one endpoint is supported.
* Structure is documented below.
*/
readonly discoveryEndpoints: pulumi.Output<outputs.redis.ClusterDiscoveryEndpoint[]>;
/**
* Backups stored in Cloud Storage buckets. The Cloud Storage buckets need to be the same region as the clusters.
* Structure is documented below.
*/
readonly gcsSource: pulumi.Output<outputs.redis.ClusterGcsSource | undefined>;
/**
* The KMS key used to encrypt the at-rest data of the cluster.
*/
readonly kmsKey: pulumi.Output<string | undefined>;
/**
* Maintenance policy for a cluster
* Structure is documented below.
*/
readonly maintenancePolicy: pulumi.Output<outputs.redis.ClusterMaintenancePolicy | undefined>;
/**
* Upcoming maintenance schedule.
* Structure is documented below.
*/
readonly maintenanceSchedules: pulumi.Output<outputs.redis.ClusterMaintenanceSchedule[]>;
/**
* Backups that generated and managed by memorystore.
* Structure is documented below.
*/
readonly managedBackupSource: pulumi.Output<outputs.redis.ClusterManagedBackupSource | undefined>;
/**
* Cluster's Certificate Authority. This field will only be populated if Redis Cluster's transitEncryptionMode is TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION
* Structure is documented below.
*/
readonly managedServerCas: pulumi.Output<outputs.redis.ClusterManagedServerCa[]>;
/**
* Unique name of the resource in this scope including project and location using the form:
* projects/{projectId}/locations/{locationId}/clusters/{clusterId}
*/
readonly name: pulumi.Output<string>;
/**
* The nodeType for the Redis cluster.
* If not provided, REDIS_HIGHMEM_MEDIUM will be used as default
* Possible values are: `REDIS_SHARED_CORE_NANO`, `REDIS_HIGHMEM_MEDIUM`, `REDIS_HIGHMEM_XLARGE`, `REDIS_STANDARD_SMALL`.
*/
readonly nodeType: pulumi.Output<string>;
/**
* Persistence config (RDB, AOF) for the cluster.
* Structure is documented below.
*/
readonly persistenceConfig: pulumi.Output<outputs.redis.ClusterPersistenceConfig>;
/**
* Output only. Redis memory precise size in GB for the entire cluster.
*/
readonly preciseSizeGb: pulumi.Output<number>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
readonly project: pulumi.Output<string>;
/**
* Required. Each PscConfig configures the consumer network where two
* network addresses will be designated to the cluster for client access.
* Currently, only one PscConfig is supported.
* Structure is documented below.
*/
readonly pscConfigs: pulumi.Output<outputs.redis.ClusterPscConfig[] | undefined>;
/**
* Output only. PSC connections for discovery of the cluster topology and accessing the cluster.
* Structure is documented below.
*/
readonly pscConnections: pulumi.Output<outputs.redis.ClusterPscConnection[]>;
/**
* Service attachment details to configure Psc connections.
* Structure is documented below.
*/
readonly pscServiceAttachments: pulumi.Output<outputs.redis.ClusterPscServiceAttachment[]>;
/**
* Configure Redis Cluster behavior using a subset of native Redis configuration parameters.
* Please check Memorystore documentation for the list of supported parameters:
* https://cloud.google.com/memorystore/docs/cluster/supported-instance-configurations
*/
readonly redisConfigs: pulumi.Output<{
[key: string]: string;
} | undefined>;
/**
* The name of the region of the Redis cluster.
*/
readonly region: pulumi.Output<string>;
/**
* Optional. The number of replica nodes per shard.
*/
readonly replicaCount: pulumi.Output<number | undefined>;
/**
* Required. Number of shards for the Redis cluster.
*/
readonly shardCount: pulumi.Output<number>;
/**
* Output only. Redis memory size in GB for the entire cluster.
*/
readonly sizeGb: pulumi.Output<number>;
/**
* The current state of this cluster. Can be CREATING, READY, UPDATING, DELETING and SUSPENDED
*/
readonly state: pulumi.Output<string>;
/**
* Output only. Additional information about the current state of the cluster.
* Structure is documented below.
*/
readonly stateInfos: pulumi.Output<outputs.redis.ClusterStateInfo[]>;
/**
* Optional. The in-transit encryption for the Redis cluster.
* If not provided, encryption is disabled for the cluster.
* Default value is `TRANSIT_ENCRYPTION_MODE_DISABLED`.
* Possible values are: `TRANSIT_ENCRYPTION_MODE_UNSPECIFIED`, `TRANSIT_ENCRYPTION_MODE_DISABLED`, `TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION`.
*/
readonly transitEncryptionMode: pulumi.Output<string | undefined>;
/**
* System assigned, unique identifier for the cluster.
*/
readonly uid: pulumi.Output<string>;
/**
* Immutable. Zone distribution config for Memorystore Redis cluster.
* Structure is documented below.
*/
readonly zoneDistributionConfig: pulumi.Output<outputs.redis.ClusterZoneDistributionConfig>;
/**
* Create a Cluster 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: ClusterArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering Cluster resources.
*/
export interface ClusterState {
/**
* Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster.
* Default value is `AUTH_MODE_DISABLED`.
* Possible values are: `AUTH_MODE_UNSPECIFIED`, `AUTH_MODE_IAM_AUTH`, `AUTH_MODE_DISABLED`.
*/
authorizationMode?: pulumi.Input<string>;
/**
* The automated backup config for a instance.
* Structure is documented below.
*/
automatedBackupConfig?: pulumi.Input<inputs.redis.ClusterAutomatedBackupConfig>;
/**
* The backup collection full resource name.
* Example: projects/{project}/locations/{location}/backupCollections/{collection}
*/
backupCollection?: pulumi.Input<string>;
/**
* The timestamp associated with the cluster creation request. A timestamp in
* RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional
* digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
*/
createTime?: pulumi.Input<string>;
/**
* Cross cluster replication config
* Structure is documented below.
*/
crossClusterReplicationConfig?: pulumi.Input<inputs.redis.ClusterCrossClusterReplicationConfig>;
/**
* Optional. Indicates if the cluster is deletion protected or not.
* If the value if set to true, any delete cluster operation will fail.
* Default value is true.
*/
deletionProtectionEnabled?: pulumi.Input<boolean>;
/**
* Output only. Endpoints created on each given network,
* for Redis clients to connect to the cluster.
* Currently only one endpoint is supported.
* Structure is documented below.
*/
discoveryEndpoints?: pulumi.Input<pulumi.Input<inputs.redis.ClusterDiscoveryEndpoint>[]>;
/**
* Backups stored in Cloud Storage buckets. The Cloud Storage buckets need to be the same region as the clusters.
* Structure is documented below.
*/
gcsSource?: pulumi.Input<inputs.redis.ClusterGcsSource>;
/**
* The KMS key used to encrypt the at-rest data of the cluster.
*/
kmsKey?: pulumi.Input<string>;
/**
* Maintenance policy for a cluster
* Structure is documented below.
*/
maintenancePolicy?: pulumi.Input<inputs.redis.ClusterMaintenancePolicy>;
/**
* Upcoming maintenance schedule.
* Structure is documented below.
*/
maintenanceSchedules?: pulumi.Input<pulumi.Input<inputs.redis.ClusterMaintenanceSchedule>[]>;
/**
* Backups that generated and managed by memorystore.
* Structure is documented below.
*/
managedBackupSource?: pulumi.Input<inputs.redis.ClusterManagedBackupSource>;
/**
* Cluster's Certificate Authority. This field will only be populated if Redis Cluster's transitEncryptionMode is TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION
* Structure is documented below.
*/
managedServerCas?: pulumi.Input<pulumi.Input<inputs.redis.ClusterManagedServerCa>[]>;
/**
* Unique name of the resource in this scope including project and location using the form:
* projects/{projectId}/locations/{locationId}/clusters/{clusterId}
*/
name?: pulumi.Input<string>;
/**
* The nodeType for the Redis cluster.
* If not provided, REDIS_HIGHMEM_MEDIUM will be used as default
* Possible values are: `REDIS_SHARED_CORE_NANO`, `REDIS_HIGHMEM_MEDIUM`, `REDIS_HIGHMEM_XLARGE`, `REDIS_STANDARD_SMALL`.
*/
nodeType?: pulumi.Input<string>;
/**
* Persistence config (RDB, AOF) for the cluster.
* Structure is documented below.
*/
persistenceConfig?: pulumi.Input<inputs.redis.ClusterPersistenceConfig>;
/**
* Output only. Redis memory precise size in GB for the entire cluster.
*/
preciseSizeGb?: pulumi.Input<number>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string>;
/**
* Required. Each PscConfig configures the consumer network where two
* network addresses will be designated to the cluster for client access.
* Currently, only one PscConfig is supported.
* Structure is documented below.
*/
pscConfigs?: pulumi.Input<pulumi.Input<inputs.redis.ClusterPscConfig>[]>;
/**
* Output only. PSC connections for discovery of the cluster topology and accessing the cluster.
* Structure is documented below.
*/
pscConnections?: pulumi.Input<pulumi.Input<inputs.redis.ClusterPscConnection>[]>;
/**
* Service attachment details to configure Psc connections.
* Structure is documented below.
*/
pscServiceAttachments?: pulumi.Input<pulumi.Input<inputs.redis.ClusterPscServiceAttachment>[]>;
/**
* Configure Redis Cluster behavior using a subset of native Redis configuration parameters.
* Please check Memorystore documentation for the list of supported parameters:
* https://cloud.google.com/memorystore/docs/cluster/supported-instance-configurations
*/
redisConfigs?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* The name of the region of the Redis cluster.
*/
region?: pulumi.Input<string>;
/**
* Optional. The number of replica nodes per shard.
*/
replicaCount?: pulumi.Input<number>;
/**
* Required. Number of shards for the Redis cluster.
*/
shardCount?: pulumi.Input<number>;
/**
* Output only. Redis memory size in GB for the entire cluster.
*/
sizeGb?: pulumi.Input<number>;
/**
* The current state of this cluster. Can be CREATING, READY, UPDATING, DELETING and SUSPENDED
*/
state?: pulumi.Input<string>;
/**
* Output only. Additional information about the current state of the cluster.
* Structure is documented below.
*/
stateInfos?: pulumi.Input<pulumi.Input<inputs.redis.ClusterStateInfo>[]>;
/**
* Optional. The in-transit encryption for the Redis cluster.
* If not provided, encryption is disabled for the cluster.
* Default value is `TRANSIT_ENCRYPTION_MODE_DISABLED`.
* Possible values are: `TRANSIT_ENCRYPTION_MODE_UNSPECIFIED`, `TRANSIT_ENCRYPTION_MODE_DISABLED`, `TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION`.
*/
transitEncryptionMode?: pulumi.Input<string>;
/**
* System assigned, unique identifier for the cluster.
*/
uid?: pulumi.Input<string>;
/**
* Immutable. Zone distribution config for Memorystore Redis cluster.
* Structure is documented below.
*/
zoneDistributionConfig?: pulumi.Input<inputs.redis.ClusterZoneDistributionConfig>;
}
/**
* The set of arguments for constructing a Cluster resource.
*/
export interface ClusterArgs {
/**
* Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster.
* Default value is `AUTH_MODE_DISABLED`.
* Possible values are: `AUTH_MODE_UNSPECIFIED`, `AUTH_MODE_IAM_AUTH`, `AUTH_MODE_DISABLED`.
*/
authorizationMode?: pulumi.Input<string>;
/**
* The automated backup config for a instance.
* Structure is documented below.
*/
automatedBackupConfig?: pulumi.Input<inputs.redis.ClusterAutomatedBackupConfig>;
/**
* Cross cluster replication config
* Structure is documented below.
*/
crossClusterReplicationConfig?: pulumi.Input<inputs.redis.ClusterCrossClusterReplicationConfig>;
/**
* Optional. Indicates if the cluster is deletion protected or not.
* If the value if set to true, any delete cluster operation will fail.
* Default value is true.
*/
deletionProtectionEnabled?: pulumi.Input<boolean>;
/**
* Backups stored in Cloud Storage buckets. The Cloud Storage buckets need to be the same region as the clusters.
* Structure is documented below.
*/
gcsSource?: pulumi.Input<inputs.redis.ClusterGcsSource>;
/**
* The KMS key used to encrypt the at-rest data of the cluster.
*/
kmsKey?: pulumi.Input<string>;
/**
* Maintenance policy for a cluster
* Structure is documented below.
*/
maintenancePolicy?: pulumi.Input<inputs.redis.ClusterMaintenancePolicy>;
/**
* Backups that generated and managed by memorystore.
* Structure is documented below.
*/
managedBackupSource?: pulumi.Input<inputs.redis.ClusterManagedBackupSource>;
/**
* Unique name of the resource in this scope including project and location using the form:
* projects/{projectId}/locations/{locationId}/clusters/{clusterId}
*/
name?: pulumi.Input<string>;
/**
* The nodeType for the Redis cluster.
* If not provided, REDIS_HIGHMEM_MEDIUM will be used as default
* Possible values are: `REDIS_SHARED_CORE_NANO`, `REDIS_HIGHMEM_MEDIUM`, `REDIS_HIGHMEM_XLARGE`, `REDIS_STANDARD_SMALL`.
*/
nodeType?: pulumi.Input<string>;
/**
* Persistence config (RDB, AOF) for the cluster.
* Structure is documented below.
*/
persistenceConfig?: pulumi.Input<inputs.redis.ClusterPersistenceConfig>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string>;
/**
* Required. Each PscConfig configures the consumer network where two
* network addresses will be designated to the cluster for client access.
* Currently, only one PscConfig is supported.
* Structure is documented below.
*/
pscConfigs?: pulumi.Input<pulumi.Input<inputs.redis.ClusterPscConfig>[]>;
/**
* Configure Redis Cluster behavior using a subset of native Redis configuration parameters.
* Please check Memorystore documentation for the list of supported parameters:
* https://cloud.google.com/memorystore/docs/cluster/supported-instance-configurations
*/
redisConfigs?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* The name of the region of the Redis cluster.
*/
region?: pulumi.Input<string>;
/**
* Optional. The number of replica nodes per shard.
*/
replicaCount?: pulumi.Input<number>;
/**
* Required. Number of shards for the Redis cluster.
*/
shardCount: pulumi.Input<number>;
/**
* Optional. The in-transit encryption for the Redis cluster.
* If not provided, encryption is disabled for the cluster.
* Default value is `TRANSIT_ENCRYPTION_MODE_DISABLED`.
* Possible values are: `TRANSIT_ENCRYPTION_MODE_UNSPECIFIED`, `TRANSIT_ENCRYPTION_MODE_DISABLED`, `TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION`.
*/
transitEncryptionMode?: pulumi.Input<string>;
/**
* Immutable. Zone distribution config for Memorystore Redis cluster.
* Structure is documented below.
*/
zoneDistributionConfig?: pulumi.Input<inputs.redis.ClusterZoneDistributionConfig>;
}