metadata.yaml (132 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-bigtable
annotations:
config.kubernetes.io/local-config: "true"
spec:
info:
title: terraform-google-bigtable
source:
repo: https://github.com/GoogleCloudPlatform/terraform-google-bigtable.git
sourceType: git
version: 0.3.0
actuationTool:
flavor: Terraform
version: ">= 1.3"
description: {}
icon: assets/icon.png
content:
examples:
- name: basic
location: examples/basic
interfaces:
variables:
- name: project_id
description: The ID of the project in which the resource belongs
varType: string
required: true
- name: name
description: The unique name of the Bigtable instance.
varType: string
required: true
- name: display_name
description: The human-readable display name of the Bigtable instance. Defaults to the instance name
varType: string
- name: deletion_protection
description: Whether or not to allow Terraform to destroy the instance
varType: bool
defaultValue: true
- name: storage_type
description: The storage type to use. One of SSD or HDD. Defaults to SSD
varType: string
defaultValue: SSD
- name: zones
description: Zones of the Bigtable cluster.
varType: |-
map(object({
zone = string
cluster_id = string
num_nodes = optional(number)
kms_key_name = optional(string)
autoscaling_config = optional(object({
min_nodes = number
max_nodes = number
cpu_target = number
storage_target = optional(number)
}))
}))
defaultValue:
zone1:
autoscaling_config:
cpu_target: 60
max_nodes: 2
min_nodes: 1
cluster_id: cluster1
zone: us-central1-a
zone2:
autoscaling_config:
cpu_target: 60
max_nodes: 2
min_nodes: 1
cluster_id: cluster2
zone: us-west1-a
zone3:
autoscaling_config:
cpu_target: 60
max_nodes: 2
min_nodes: 1
cluster_id: cluster3
zone: us-central1-c
- name: labels
description: labels associated to the Bigtable instance.
varType: map(string)
defaultValue: {}
- name: tables
description: Tables to created in the Bigtable instance.
varType: |-
map(object({
table_name = string
split_keys = optional(list(string))
deletion_protection = optional(string, "PROTECTED")
change_stream_retention = optional(string, "0s")
automated_backup_policy = optional(object({
retention_period = string
frequency = string
}))
column_family = optional(map(object({
family = string
}))
)
}))
defaultValue: {}
outputs:
- name: instance_id
description: Bigtable instance id
type: string
- name: instance_name
description: Bigtable instance name
type: string
- name: table_ids
description: List of table being provisioned
type:
- list
- string
requirements:
roles:
- level: Project
roles:
- roles/bigtable.admin
- roles/cloudkms.admin
- roles/iam.serviceAccountAdmin
- roles/serviceusage.serviceUsageAdmin
- roles/resourcemanager.projectIamAdmin
services:
- cloudresourcemanager.googleapis.com
- storage-api.googleapis.com
- serviceusage.googleapis.com
- bigtableadmin.googleapis.com
- bigtable.googleapis.com
providerVersions:
- source: hashicorp/google
version: ">= 3.53, < 7"