diff --git a/Makefile b/Makefile index a307dfe1..d5b88759 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ # Make will use bash instead of sh SHELL := /usr/bin/env bash -DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.22 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.23 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd ENABLE_BPMETADATA := 1 diff --git a/metadata.display.yaml b/metadata.display.yaml new file mode 100644 index 00000000..a7995e19 --- /dev/null +++ b/metadata.display.yaml @@ -0,0 +1,28 @@ +# 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-vm-display + annotations: + config.kubernetes.io/local-config: "true" +spec: + info: + title: terraform-google-vm + source: + repo: https://github.com/terraform-google-modules/terraform-google-vm + sourceType: git + ui: + input: {} diff --git a/modules/compute_disk_snapshot/metadata.display.yaml b/modules/compute_disk_snapshot/metadata.display.yaml new file mode 100644 index 00000000..54a26bc7 --- /dev/null +++ b/modules/compute_disk_snapshot/metadata.display.yaml @@ -0,0 +1,54 @@ +# 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-vm-compute-disk-snapshot-display + annotations: + config.kubernetes.io/local-config: "true" +spec: + info: + title: Compute Disk Snapshot + source: + repo: https://github.com/terraform-google-modules/terraform-google-vm + sourceType: git + dir: /modules/compute_disk_snapshot + ui: + input: + variables: + disks: + name: disks + title: Disks + module_depends_on: + name: module_depends_on + title: Module Depends On + name: + name: name + title: Name + project: + name: project + title: Project + region: + name: region + title: Region + snapshot_properties: + name: snapshot_properties + title: Snapshot Properties + snapshot_retention_policy: + name: snapshot_retention_policy + title: Snapshot Retention Policy + snapshot_schedule: + name: snapshot_schedule + title: Snapshot Schedule diff --git a/modules/compute_disk_snapshot/metadata.yaml b/modules/compute_disk_snapshot/metadata.yaml index 5472cc2e..c14108c7 100644 --- a/modules/compute_disk_snapshot/metadata.yaml +++ b/modules/compute_disk_snapshot/metadata.yaml @@ -28,7 +28,7 @@ spec: version: 13.2.4 actuationTool: flavor: Terraform - version: ">=0.13.0" + version: ">=1.3.0" description: {} content: examples: diff --git a/modules/compute_disk_snapshot/versions.tf b/modules/compute_disk_snapshot/versions.tf index 043ab584..a6dc3184 100644 --- a/modules/compute_disk_snapshot/versions.tf +++ b/modules/compute_disk_snapshot/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = ">=0.13.0" + required_version = ">=1.3.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/compute_instance/metadata.display.yaml b/modules/compute_instance/metadata.display.yaml new file mode 100644 index 00000000..d2655a94 --- /dev/null +++ b/modules/compute_instance/metadata.display.yaml @@ -0,0 +1,84 @@ +# 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-vm-compute-instance-display + annotations: + config.kubernetes.io/local-config: "true" +spec: + info: + title: Compute Instance + source: + repo: https://github.com/terraform-google-modules/terraform-google-vm + sourceType: git + dir: /modules/compute_instance + ui: + input: + variables: + access_config: + name: access_config + title: Access Config + add_hostname_suffix: + name: add_hostname_suffix + title: Add Hostname Suffix + alias_ip_ranges: + name: alias_ip_ranges + title: Alias Ip Ranges + deletion_protection: + name: deletion_protection + title: Deletion Protection + hostname: + name: hostname + title: Hostname + hostname_suffix_separator: + name: hostname_suffix_separator + title: Hostname Suffix Separator + instance_template: + name: instance_template + title: Instance Template + ipv6_access_config: + name: ipv6_access_config + title: Ipv6 Access Config + labels: + name: labels + title: Labels + network: + name: network + title: Network + num_instances: + name: num_instances + title: Num Instances + region: + name: region + title: Region + resource_manager_tags: + name: resource_manager_tags + title: Resource Manager Tags + resource_policies: + name: resource_policies + title: Resource Policies + static_ips: + name: static_ips + title: Static Ips + subnetwork: + name: subnetwork + title: Subnetwork + subnetwork_project: + name: subnetwork_project + title: Subnetwork Project + zone: + name: zone + title: Zone diff --git a/modules/compute_instance/metadata.yaml b/modules/compute_instance/metadata.yaml index 96ab017c..7f671df8 100644 --- a/modules/compute_instance/metadata.yaml +++ b/modules/compute_instance/metadata.yaml @@ -28,7 +28,7 @@ spec: version: 13.2.4 actuationTool: flavor: Terraform - version: ">=0.13.0" + version: ">=1.3.0" description: {} content: examples: diff --git a/modules/compute_instance/versions.tf b/modules/compute_instance/versions.tf index 129417d7..f980f9c3 100644 --- a/modules/compute_instance/versions.tf +++ b/modules/compute_instance/versions.tf @@ -15,7 +15,7 @@ */ terraform { - required_version = ">=0.13.0" + required_version = ">=1.3.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/instance_template/README.md b/modules/instance_template/README.md index 951bc85c..c9b36918 100644 --- a/modules/instance_template/README.md +++ b/modules/instance_template/README.md @@ -47,6 +47,7 @@ See the [simple](../../examples/instance_template/simple) for a usage example. | preemptible | Allow the instance to be preempted | `bool` | `false` | no | | project\_id | The GCP project ID | `string` | n/a | yes | | region | Region where the instance template should be created. | `string` | n/a | yes | +| resource\_manager\_tags | (Optional) A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag\_key\_id}, and values are in the format tagValues/456 | `map(string)` | `null` | no | | resource\_policies | A list of self\_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported. | `list(string)` | `[]` | no | | service\_account | Service account to attach to the instance. See https://www.terraform.io/docs/providers/google/r/compute_instance_template#service_account. |
object({
email = string
scopes = optional(set(string), ["cloud-platform"])
}) | `null` | no |
| service\_account\_project\_roles | Roles to grant to the newly created cloud run SA in specified project. Should be used with create\_service\_account set to true and no input for service\_account | `list(string)` | `[]` | no |
diff --git a/modules/instance_template/main.tf b/modules/instance_template/main.tf
index 46579867..fe2b8c72 100644
--- a/modules/instance_template/main.tf
+++ b/modules/instance_template/main.tf
@@ -120,6 +120,8 @@ resource "google_compute_instance_template" "tpl" {
region = var.region
min_cpu_platform = local.min_cpu_platform
resource_policies = var.resource_policies
+ resource_manager_tags = var.resource_manager_tags
+
dynamic "disk" {
for_each = local.all_disks
content {
diff --git a/modules/instance_template/metadata.display.yaml b/modules/instance_template/metadata.display.yaml
index bac451ca..ddb521b1 100644
--- a/modules/instance_template/metadata.display.yaml
+++ b/modules/instance_template/metadata.display.yaml
@@ -156,6 +156,9 @@ spec:
name: region
title: Region
level: 1
+ resource_manager_tags:
+ name: resource_manager_tags
+ title: Resource Manager Tags
resource_policies:
name: resource_policies
title: Resource Policies
diff --git a/modules/instance_template/metadata.yaml b/modules/instance_template/metadata.yaml
index 77f87f63..b618f77c 100644
--- a/modules/instance_template/metadata.yaml
+++ b/modules/instance_template/metadata.yaml
@@ -28,7 +28,7 @@ spec:
version: 13.2.4
actuationTool:
flavor: Terraform
- version: ">=1.3"
+ version: ">=1.3.0"
description: {}
content:
examples:
@@ -430,28 +430,20 @@ spec:
ip_cidr_range = string
subnetwork_range_name = string
})
+ - name: resource_manager_tags
+ description: (Optional) A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456
+ varType: map(string)
outputs:
- name: name
description: Name of instance template
- type: string
- name: self_link
description: Self-link of instance template
- type: string
- name: self_link_unique
description: Unique self-link of instance template (recommended output to use instead of self_link)
- type: string
- name: service_account_info
description: Service account id and email
- type:
- - object
- - email: string
- id: string
- member: string
- name: tags
description: Tags that will be associated with instance(s)
- type:
- - list
- - string
requirements:
roles:
- level: Project
diff --git a/modules/instance_template/variables.tf b/modules/instance_template/variables.tf
index 69a6d3e1..806a1fe1 100644
--- a/modules/instance_template/variables.tf
+++ b/modules/instance_template/variables.tf
@@ -429,3 +429,9 @@ EOF
})
default = null
}
+
+variable "resource_manager_tags" {
+ description = "(Optional) A set of key/value resource manager tag pairs to bind to the instances. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456"
+ type = map(string)
+ default = null
+}
diff --git a/modules/instance_template/versions.tf b/modules/instance_template/versions.tf
index 9e157e0d..7eb74d06 100644
--- a/modules/instance_template/versions.tf
+++ b/modules/instance_template/versions.tf
@@ -15,7 +15,7 @@
*/
terraform {
- required_version = ">=1.3"
+ required_version = ">=1.3.0"
required_providers {
google-beta = {
source = "hashicorp/google-beta"
diff --git a/modules/mig/metadata.yaml b/modules/mig/metadata.yaml
index 2de4c558..7f396253 100644
--- a/modules/mig/metadata.yaml
+++ b/modules/mig/metadata.yaml
@@ -291,27 +291,14 @@ spec:
outputs:
- name: apphub_workload_uri
description: Workload URI in CAIS style to be used by Apphub.
- type:
- - object
- - location: string
- workload_id: string
- workload_uri: string
- name: health_check_self_links
description: All self_links of healthchecks created for the instance group.
- type:
- - list
- - string
- name: instance_group
description: Instance-group url of managed instance group
- type: string
- name: instance_group_manager
description: An instance of google_compute_region_instance_group_manager of the instance group.
- type:
- - object
- - base_instance_name: string
- name: self_link
description: Self-link of managed instance group
- type: string
requirements:
roles:
- level: Project
diff --git a/modules/mig_with_percent/metadata.display.yaml b/modules/mig_with_percent/metadata.display.yaml
new file mode 100644
index 00000000..2db34b90
--- /dev/null
+++ b/modules/mig_with_percent/metadata.display.yaml
@@ -0,0 +1,123 @@
+# 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-vm-mig-with-percent-display
+ annotations:
+ config.kubernetes.io/local-config: "true"
+spec:
+ info:
+ title: Managed Instance Group (MIG) with percent
+ source:
+ repo: https://github.com/terraform-google-modules/terraform-google-vm
+ sourceType: git
+ dir: /modules/mig_with_percent
+ ui:
+ input:
+ variables:
+ autoscaler_name:
+ name: autoscaler_name
+ title: Autoscaler Name
+ autoscaling_cpu:
+ name: autoscaling_cpu
+ title: Autoscaling Cpu
+ autoscaling_enabled:
+ name: autoscaling_enabled
+ title: Autoscaling Enabled
+ autoscaling_lb:
+ name: autoscaling_lb
+ title: Autoscaling Lb
+ autoscaling_metric:
+ name: autoscaling_metric
+ title: Autoscaling Metric
+ autoscaling_mode:
+ name: autoscaling_mode
+ title: Autoscaling Mode
+ autoscaling_scale_in_control:
+ name: autoscaling_scale_in_control
+ title: Autoscaling Scale In Control
+ cooldown_period:
+ name: cooldown_period
+ title: Cooldown Period
+ distribution_policy_target_shape:
+ name: distribution_policy_target_shape
+ title: Distribution Policy Target Shape
+ distribution_policy_zones:
+ name: distribution_policy_zones
+ title: Distribution Policy Zones
+ health_check:
+ name: health_check
+ title: Health Check
+ health_check_name:
+ name: health_check_name
+ title: Health Check Name
+ hostname:
+ name: hostname
+ title: Hostname
+ instance_template_initial_version:
+ name: instance_template_initial_version
+ title: Instance Template Initial Version
+ instance_template_next_version:
+ name: instance_template_next_version
+ title: Instance Template Next Version
+ labels:
+ name: labels
+ title: Labels
+ max_replicas:
+ name: max_replicas
+ title: Max Replicas
+ mig_name:
+ name: mig_name
+ title: Mig Name
+ mig_timeouts:
+ name: mig_timeouts
+ title: Mig Timeouts
+ min_replicas:
+ name: min_replicas
+ title: Min Replicas
+ named_ports:
+ name: named_ports
+ title: Named Ports
+ next_version_percent:
+ name: next_version_percent
+ title: Next Version Percent
+ project_id:
+ name: project_id
+ title: Project Id
+ region:
+ name: region
+ title: Region
+ scaling_schedules:
+ name: scaling_schedules
+ title: Scaling Schedules
+ stateful_disks:
+ name: stateful_disks
+ title: Stateful Disks
+ stateful_ips:
+ name: stateful_ips
+ title: Stateful Ips
+ target_pools:
+ name: target_pools
+ title: Target Pools
+ target_size:
+ name: target_size
+ title: Target Size
+ update_policy:
+ name: update_policy
+ title: Update Policy
+ wait_for_instances:
+ name: wait_for_instances
+ title: Wait For Instances
diff --git a/modules/preemptible_and_regular_instance_templates/metadata.display.yaml b/modules/preemptible_and_regular_instance_templates/metadata.display.yaml
new file mode 100644
index 00000000..ef6a50b1
--- /dev/null
+++ b/modules/preemptible_and_regular_instance_templates/metadata.display.yaml
@@ -0,0 +1,96 @@
+# 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-vm-preemptible-and-regular-instance-templates-display
+ annotations:
+ config.kubernetes.io/local-config: "true"
+spec:
+ info:
+ title: preemptible_and_regular_instance_templates
+ source:
+ repo: https://github.com/terraform-google-modules/terraform-google-vm
+ sourceType: git
+ dir: /modules/preemptible_and_regular_instance_templates
+ ui:
+ input:
+ variables:
+ access_config:
+ name: access_config
+ title: Access Config
+ additional_disks:
+ name: additional_disks
+ title: Additional Disks
+ auto_delete:
+ name: auto_delete
+ title: Auto Delete
+ can_ip_forward:
+ name: can_ip_forward
+ title: Can Ip Forward
+ disk_size_gb:
+ name: disk_size_gb
+ title: Disk Size Gb
+ disk_type:
+ name: disk_type
+ title: Disk Type
+ ipv6_access_config:
+ name: ipv6_access_config
+ title: Ipv6 Access Config
+ labels:
+ name: labels
+ title: Labels
+ machine_type:
+ name: machine_type
+ title: Machine Type
+ metadata:
+ name: metadata
+ title: Metadata
+ name_prefix:
+ name: name_prefix
+ title: Name Prefix
+ network:
+ name: network
+ title: Network
+ project_id:
+ name: project_id
+ title: Project Id
+ region:
+ name: region
+ title: Region
+ service_account:
+ name: service_account
+ title: Service Account
+ source_image:
+ name: source_image
+ title: Source Image
+ source_image_family:
+ name: source_image_family
+ title: Source Image Family
+ source_image_project:
+ name: source_image_project
+ title: Source Image Project
+ startup_script:
+ name: startup_script
+ title: Startup Script
+ subnetwork:
+ name: subnetwork
+ title: Subnetwork
+ subnetwork_project:
+ name: subnetwork_project
+ title: Subnetwork Project
+ tags:
+ name: tags
+ title: Tags
diff --git a/modules/preemptible_and_regular_instance_templates/metadata.yaml b/modules/preemptible_and_regular_instance_templates/metadata.yaml
index 1e366aee..e26a2b7a 100644
--- a/modules/preemptible_and_regular_instance_templates/metadata.yaml
+++ b/modules/preemptible_and_regular_instance_templates/metadata.yaml
@@ -28,7 +28,7 @@ spec:
version: 13.2.4
actuationTool:
flavor: Terraform
- version: ">=0.13.0"
+ version: ">=1.3.0"
description: {}
content:
examples:
diff --git a/modules/preemptible_and_regular_instance_templates/versions.tf b/modules/preemptible_and_regular_instance_templates/versions.tf
index d7acae0f..7dc67edb 100644
--- a/modules/preemptible_and_regular_instance_templates/versions.tf
+++ b/modules/preemptible_and_regular_instance_templates/versions.tf
@@ -15,7 +15,7 @@
*/
terraform {
- required_version = ">=0.13.0"
+ required_version = ">=1.3.0"
required_providers {
google = ">= 3.88, < 7"
google-beta = ">= 3.88, < 7"
diff --git a/modules/umig/metadata.display.yaml b/modules/umig/metadata.display.yaml
new file mode 100644
index 00000000..7ee9c3b1
--- /dev/null
+++ b/modules/umig/metadata.display.yaml
@@ -0,0 +1,75 @@
+# 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-vm-umig-display
+ annotations:
+ config.kubernetes.io/local-config: "true"
+spec:
+ info:
+ title: Unmanaged Instance Group (UMIG)
+ source:
+ repo: https://github.com/terraform-google-modules/terraform-google-vm
+ sourceType: git
+ dir: /modules/umig
+ ui:
+ input:
+ variables:
+ access_config:
+ name: access_config
+ title: Access Config
+ additional_networks:
+ name: additional_networks
+ title: Additional Networks
+ hostname:
+ name: hostname
+ title: Hostname
+ hostname_suffix_separator:
+ name: hostname_suffix_separator
+ title: Hostname Suffix Separator
+ instance_template:
+ name: instance_template
+ title: Instance Template
+ ipv6_access_config:
+ name: ipv6_access_config
+ title: Ipv6 Access Config
+ named_ports:
+ name: named_ports
+ title: Named Ports
+ network:
+ name: network
+ title: Network
+ num_instances:
+ name: num_instances
+ title: Num Instances
+ project_id:
+ name: project_id
+ title: Project Id
+ region:
+ name: region
+ title: Region
+ static_ips:
+ name: static_ips
+ title: Static Ips
+ subnetwork:
+ name: subnetwork
+ title: Subnetwork
+ subnetwork_project:
+ name: subnetwork_project
+ title: Subnetwork Project
+ zones:
+ name: zones
+ title: Zones
diff --git a/modules/umig/metadata.yaml b/modules/umig/metadata.yaml
index c1408edf..6b95b0ae 100644
--- a/modules/umig/metadata.yaml
+++ b/modules/umig/metadata.yaml
@@ -28,7 +28,7 @@ spec:
version: 13.2.4
actuationTool:
flavor: Terraform
- version: ">=0.13.0"
+ version: ">=1.3.0"
description: {}
content:
examples:
diff --git a/modules/umig/versions.tf b/modules/umig/versions.tf
index d79d270c..173a76d3 100644
--- a/modules/umig/versions.tf
+++ b/modules/umig/versions.tf
@@ -15,7 +15,7 @@
*/
terraform {
- required_version = ">=0.13.0"
+ required_version = ">=1.3.0"
required_providers {
google = {
source = "hashicorp/google"