modules/simple-secret/metadata.yaml (142 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-secret-manager-simple-secret
annotations:
config.kubernetes.io/local-config: "true"
spec:
info:
title: Terraform Google Secret Manager Secret Submodule
source:
repo: https://github.com/GoogleCloudPlatform/terraform-google-secret-manager.git
sourceType: git
dir: /modules/simple-secret
version: 0.8.0
actuationTool:
flavor: Terraform
version: ">= 1.3"
description: {}
content:
examples:
- name: kms
location: examples/kms
- name: multiple
location: examples/multiple
- name: pubsub
location: examples/pubsub
- name: simple
location: examples/simple
interfaces:
variables:
- name: project_id
description: The project ID to manage the Secret Manager resources
varType: string
required: true
- name: name
description: The name of the secret to create.
varType: string
required: true
- name: secret_data
description: "The secret data. Must be no larger than 64KiB. Note: This property is sensitive and will not be displayed in the plan."
varType: string
required: true
connections:
- source:
source: github.com/terraform-google-modules/terraform-google-sql-db//modules/postgresql
version: ">= 23.0"
spec:
outputExpr: generated_user_password
- source:
source: github.com/terraform-google-modules/terraform-google-sql-db//modules/mysql
version: ">= 23.0"
spec:
outputExpr: generated_user_password
- name: rotation
description: The rotation policy for the secret. If not set, the secret will not rotate.
varType: |-
object({
rotation_period = string # The Duration between rotation notifications, in seconds.
next_rotation_time = string # The time at which the Secret Manager secret is scheduled for rotation, in RFC3339 format. Examples: '2014-10-02T15:01:23Z' and '2014-10-02T15:01:23.045123456Z'
})
- name: user_managed_replication
description: |
Replication parameters that will be used for the defined secret.
If not provided, the secret will be automatically replicated using Google-managed key without any regional restrictions.
Example:
user_managed_replication = [
{
location = "us-central1"
kms_key_name = "projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME"
},
{
location = "europe-west1"
kms_key_name = "projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME"
}
]
varType: |-
list(object({
location = string,
kms_key_name = string,
}))
defaultValue: []
- name: automatic_replication
description: |
Automatic replication parameters that will be used for the defined secret.
If not provided, automatic replication is enabled and Google-managed key is used by default.
Example:
automatic_replication = {
kms_key_name = "projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME"
}
varType: |-
object({
kms_key_name = optional(string, null)
})
defaultValue: {}
- name: topics
description: A list of up to 10 Pub/Sub topics to which messages are published when control plane operations are called on the secret or its versions.
varType: list(string)
defaultValue: []
- name: labels
description: The map of labels to be added to the defined secret.
varType: map(string)
defaultValue: {}
outputs:
- name: env_vars
description: Secret as environment variable
type:
- object
- SECRET:
- object
- secret: string
version: string
- name: id
description: The ID of the created secret
type: string
- name: name
description: The name of the created secret
type: string
- name: project_id
description: GCP Project ID where secret was created
type: string
- name: version
description: The version of the created secret
type: string
requirements:
roles:
- level: Project
roles:
- roles/secretmanager.admin
- roles/cloudkms.admin
- roles/pubsub.admin
services:
- cloudresourcemanager.googleapis.com
- storage-api.googleapis.com
- serviceusage.googleapis.com
- secretmanager.googleapis.com
- pubsub.googleapis.com
- cloudkms.googleapis.com
providerVersions:
- source: hashicorp/google
version: ">= 4.83.0, < 7"
- source: hashicorp/google-beta
version: ">= 4.83.0, < 7"