From 6d55969ccae1b2cdecb9aba13dcf0b3a5f4ccefd Mon Sep 17 00:00:00 2001 From: g-awmalik Date: Wed, 4 Jan 2023 11:58:54 -0800 Subject: [PATCH] fix: fixes lint issues and generates metadata (#59) Co-authored-by: Awais Malik --- Makefile | 2 +- README.md | 2 +- build/int.cloudbuild.yaml | 2 +- build/lint.cloudbuild.yaml | 5 +- kitchen.yml | 1 + main.tf | 2 +- metadata.yaml | 134 +++++++++++++++++++++++++++++++++++++ variables.tf | 2 + 8 files changed, 145 insertions(+), 5 deletions(-) create mode 100644 metadata.yaml diff --git a/Makefile b/Makefile index 1aef813a..1f3c5671 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.0 +DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 1.10 DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools REGISTRY_URL := gcr.io/cloud-foundation-cicd diff --git a/README.md b/README.md index 41e443e2..f12eefed 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Full functional examples are located in the [examples](./examples/) directory. | disable\_health\_check | Disables the health check on the target pool. | `bool` | `false` | no | | firewall\_project | Name of the project to create the firewall rule in. Useful for shared VPC. Default is var.project. | `string` | `""` | no | | health\_check | Health check to determine whether instances are responsive and able to do work |
object({
check_interval_sec = number
healthy_threshold = number
timeout_sec = number
unhealthy_threshold = number
port = number
request_path = string
host = string
})
|
{
"check_interval_sec": null,
"healthy_threshold": null,
"host": null,
"port": null,
"request_path": null,
"timeout_sec": null,
"unhealthy_threshold": null
}
| no | -| ip\_address | IP address of the external load balancer, if empty one will be assigned. | `any` | `null` | no | +| ip\_address | IP address of the external load balancer, if empty one will be assigned. | `string` | `null` | no | | ip\_protocol | The IP protocol for the frontend forwarding rule and firewall rule. TCP, UDP, ESP, AH, SCTP or ICMP. | `string` | `"TCP"` | no | | labels | The labels to attach to resources created by this module. | `map(string)` | `{}` | no | | name | Name for the forwarding rule and prefix for supporting resources. | `string` | n/a | yes | diff --git a/build/int.cloudbuild.yaml b/build/int.cloudbuild.yaml index 2fe9a027..b27cf119 100644 --- a/build/int.cloudbuild.yaml +++ b/build/int.cloudbuild.yaml @@ -38,4 +38,4 @@ tags: - 'integration' substitutions: _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' - _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.0' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.10' diff --git a/build/lint.cloudbuild.yaml b/build/lint.cloudbuild.yaml index 856440d1..9e1353e2 100644 --- a/build/lint.cloudbuild.yaml +++ b/build/lint.cloudbuild.yaml @@ -13,9 +13,12 @@ # limitations under the License. steps: -- name: 'gcr.io/cloud-foundation-cicd/cft/developer-tools:0.13' +- name: 'gcr.io/cloud-foundation-cicd/$_DOCKER_IMAGE_DEVELOPER_TOOLS:$_DOCKER_TAG_VERSION_DEVELOPER_TOOLS' id: 'lint' args: ['/usr/local/bin/test_lint.sh'] tags: - 'ci' - 'lint' +substitutions: + _DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools' + _DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '1.10' diff --git a/kitchen.yml b/kitchen.yml index 481dccf5..5f1473f9 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -28,6 +28,7 @@ suites: - name: basic driver: root_module_directory: test/fixtures/basic/ + verify_version: false verifier: color: false systems: diff --git a/main.tf b/main.tf index 35aa5bf8..2fcba201 100644 --- a/main.tf +++ b/main.tf @@ -37,7 +37,7 @@ resource "google_compute_target_pool" "default" { region = var.region session_affinity = var.session_affinity - health_checks = var.disable_health_check ? [] : [google_compute_http_health_check.default.0.self_link] + health_checks = var.disable_health_check ? [] : [google_compute_http_health_check.default[0].self_link] } resource "google_compute_http_health_check" "default" { diff --git a/metadata.yaml b/metadata.yaml new file mode 100644 index 00000000..3ebee2fe --- /dev/null +++ b/metadata.yaml @@ -0,0 +1,134 @@ +# Copyright 2022 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-lb + annotations: + config.kubernetes.io/local-config: "true" +spec: + title: Regional TCP Load Balancer Terraform Module + source: + repo: https://github.com/terraform-google-modules/terraform-google-lb + sourceType: git + version: 4.0.0 + actuationTool: + type: Terraform + version: '>= 0.13' + examples: + - name: basic + location: examples/basic + variables: + - name: allowed_ips + description: The IP address ranges which can access the load balancer. + type: list(string) + default: + - 0.0.0.0/0 + required: false + - name: disable_health_check + description: Disables the health check on the target pool. + type: bool + default: false + required: false + - name: firewall_project + description: Name of the project to create the firewall rule in. Useful for shared VPC. Default is var.project. + type: string + default: "" + required: false + - name: health_check + description: Health check to determine whether instances are responsive and able to do work + type: |- + object({ + check_interval_sec = number + healthy_threshold = number + timeout_sec = number + unhealthy_threshold = number + port = number + request_path = string + host = string + }) + default: + check_interval_sec: null + healthy_threshold: null + host: null + port: null + request_path: null + timeout_sec: null + unhealthy_threshold: null + required: false + - name: ip_address + description: IP address of the external load balancer, if empty one will be assigned. + type: string + required: false + - name: ip_protocol + description: The IP protocol for the frontend forwarding rule and firewall rule. TCP, UDP, ESP, AH, SCTP or ICMP. + type: string + default: TCP + required: false + - name: labels + description: The labels to attach to resources created by this module. + type: map(string) + default: {} + required: false + - name: name + description: Name for the forwarding rule and prefix for supporting resources. + type: string + required: true + - name: network + description: Name of the network to create resources in. + type: string + default: default + required: false + - name: project + description: The project to deploy to, if not set the default provider project is used. + type: string + default: "" + required: false + - name: region + description: Region used for GCP resources. + type: string + required: true + - name: service_port + description: TCP port your service is listening on. + type: number + required: true + - name: session_affinity + description: How to distribute load. Options are `NONE`, `CLIENT_IP` and `CLIENT_IP_PROTO` + type: string + default: NONE + required: false + - name: target_service_accounts + description: List of target service accounts to allow traffic using firewall rule. + type: list(string) + required: false + - name: target_tags + description: List of target tags to allow traffic using firewall rule. + type: list(string) + required: false + outputs: + - name: external_ip + description: The external ip address of the forwarding rule. + - name: target_pool + description: The `self_link` to the target pool resource created. + roles: + - level: Project + roles: + - roles/compute.admin + - roles/owner + services: + - replicapool.googleapis.com + - resourceviews.googleapis.com + - serviceusage.googleapis.com + - iam.googleapis.com diff --git a/variables.tf b/variables.tf index 4d15ac6b..033fcfb1 100644 --- a/variables.tf +++ b/variables.tf @@ -95,11 +95,13 @@ variable "health_check" { variable "ip_address" { description = "IP address of the external load balancer, if empty one will be assigned." + type = string default = null } variable "ip_protocol" { description = "The IP protocol for the frontend forwarding rule and firewall rule. TCP, UDP, ESP, AH, SCTP or ICMP." + type = string default = "TCP" }