metadata.yaml (45 lines of code) (raw):

# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. apiVersion: blueprints.cloud.google.com/v1alpha1 kind: BlueprintMetadata metadata: name: terraform-google-cloud-spanner annotations: config.kubernetes.io/local-config: "true" spec: info: title: terraform-google-cloud-spanner source: repo: https://github.com/GoogleCloudPlatform/terraform-google-cloud-spanner sourceType: git version: 1.1.3 actuationTool: flavor: Terraform version: ">= 1.3" description: {} icon: assets/icon.png content: subBlueprints: - name: schedule_spanner_backup location: modules/schedule_spanner_backup examples: - name: example_with_backup location: examples/example_with_backup - name: example_with_kms location: examples/example_with_kms - name: simple_example location: examples/simple_example interfaces: variables: - name: project_id description: The project ID to deploy to varType: string required: true - name: instance_name description: A unique identifier for the instance, which cannot be changed after the instance is created. The name must be between 6 and 30 characters in length. varType: string required: true - name: instance_display_name description: The descriptive name for this instance as it appears in UIs. varType: string defaultValue: spanner-instance - name: instance_config description: The name of the instance's configuration (similar but not quite the same as a region) which defines the geographic placement and replication of your databases in this instance. It determines where your data is stored. Values are typically of the form regional-europe-west1, us-central etc. In order to obtain a valid list please consult the https://cloud.google.com/spanner/docs/instance-configurations varType: string required: true - name: instance_size description: The sizing configuration of Spanner Instance based on num of nodes OR instance processing units. varType: |- object({ num_nodes = optional(number) processing_units = optional(number) }) required: true - name: create_instance description: "Switch to use create OR use existing Spanner Instance " varType: bool defaultValue: true - name: enable_autoscaling description: Enable autoscaling for the Spanner Instance varType: bool defaultValue: false - name: instance_iam description: The list of permissions on spanner instance varType: list(string) defaultValue: [] connections: - source: source: github.com/terraform-google-modules/terraform-google-service-accounts//modules/simple-sa version: ">= 4.4" spec: outputExpr: iam_email - source: source: github.com/GoogleCloudPlatform/terraform-google-cloud-run//modules/v2 version: ">= 0.14" spec: outputExpr: service_account_id.member - source: source: github.com/terraform-google-modules/terraform-google-vm//modules/instance_template version: ">= 13.2.0" spec: outputExpr: service_account_info.member - name: instance_labels description: A set of key/value label pairs to assign to the spanner instance varType: map(string) defaultValue: {} - name: database_config description: "The list of databases with their configuration to be created " varType: |- map(object({ version_retention_period = string ddl = optional(list(string), []) kms_key_name = optional(string) deletion_protection = bool database_iam = optional(list(string), []) enable_backup = optional(bool) backup_retention = optional(string) create_db = optional(bool) })) defaultValue: db1: backup_retention: 86400s create_db: true database_iam: [] ddl: [] deletion_protection: false enable_backup: true version_retention_period: 3d - name: cron_spec_text description: The cron expression for the backup schedule. varType: string defaultValue: 0 2 * * * - name: min_processing_units description: Minimum number of processing units for autoscaling. varType: number defaultValue: 1000 - name: max_processing_units description: Maximum number of processing units for autoscaling. varType: number defaultValue: 3000 - name: min_nodes description: Minimum number of nodes for autoscaling. varType: number defaultValue: 1 - name: max_nodes description: Maximum number of nodes for autoscaling. varType: number defaultValue: 3 - name: high_priority_cpu_utilization_percent description: Target high priority CPU utilization percentage for autoscaling. varType: number defaultValue: 60 - name: storage_utilization_percent description: Target storage utilization percentage for autoscaling. varType: number defaultValue: 70 - name: replica_location description: Location of the replica for asymmetric autoscaling. varType: string defaultValue: us-central1 - name: override_min_nodes description: Minimum number of nodes for specific replica overrides. varType: number defaultValue: 1 - name: override_max_nodes description: Maximum number of nodes for specific replica overrides. varType: number defaultValue: 3 - name: edition description: The edition of the Spanner instance. varType: string defaultValue: STANDARD - name: default_backup_schedule_type description: Default backup schedule type for new databases. varType: string defaultValue: NONE - name: force_destroy description: Whether to force destroy the instance and its backups. varType: bool defaultValue: false - name: use_full_backup_spec description: Whether to use full backup specification. varType: bool defaultValue: true - name: use_incremental_backup_spec description: Whether to use incremental backup specification. varType: bool defaultValue: false outputs: - name: env_vars description: Map of environment variables for Spanner databases with keys as project_id:instance_name:database_name and values as fully qualified database paths type: - map - string - name: spanner_db_details description: Spanner Databases information map type: - object - db1: - object - database_dialect: string ddl: - list - string deletion_protection: bool enable_drop_protection: bool encryption_config: - list - - object - kms_key_name: string kms_key_names: - list - string id: string instance: string name: string project: string state: string timeouts: - object - create: string delete: string update: string version_retention_period: string - name: spanner_instance_id description: Spanner Instance ID type: string - name: spanner_schedule_backup_id description: Spanner Backup Workflow ID type: string requirements: roles: - level: Project roles: - roles/owner services: - iam.googleapis.com - cloudresourcemanager.googleapis.com - storage-api.googleapis.com - serviceusage.googleapis.com - workflows.googleapis.com - cloudscheduler.googleapis.com - spanner.googleapis.com - pubsub.googleapis.com - logging.googleapis.com - storage.googleapis.com - appengine.googleapis.com - cloudkms.googleapis.com providerVersions: - source: hashicorp/google version: ">= 6.1, < 7" - source: hashicorp/google-beta version: ">= 6.1, < 7" - source: hashicorp/null version: ~> 3.1 - source: hashicorp/random version: ~> 3.1