From 7670a6009fd58b7cae25426290dd6299aab377ad Mon Sep 17 00:00:00 2001 From: Valerio Ponza Date: Fri, 24 Feb 2023 16:05:11 +0000 Subject: [PATCH 01/17] adding meshconfig.googleapis.com to JIT list. --- modules/project/README.md | 1 + modules/project/service-accounts.tf | 2 ++ 2 files changed, 3 insertions(+) diff --git a/modules/project/README.md b/modules/project/README.md index 730fe190..7be0a1aa 100644 --- a/modules/project/README.md +++ b/modules/project/README.md @@ -189,6 +189,7 @@ This table lists all affected services and roles that you need to grant to servi | cloudasset.googleapis.com | cloudasset | roles/cloudasset.serviceAgent | | cloudbuild.googleapis.com | cloudbuild | roles/cloudbuild.builds.builder | | gkehub.googleapis.com | fleet | roles/gkehub.serviceAgent | +| meshconfig.googleapis.com | servicemesh | roles/anthosservicemesh.serviceAgent | | multiclusteringress.googleapis.com | multicluster-ingress | roles/multiclusteringress.serviceAgent | | pubsub.googleapis.com | pubsub | roles/pubsub.serviceAgent | | sqladmin.googleapis.com | sqladmin | roles/cloudsql.serviceAgent | diff --git a/modules/project/service-accounts.tf b/modules/project/service-accounts.tf index e93978a8..da270192 100644 --- a/modules/project/service-accounts.tf +++ b/modules/project/service-accounts.tf @@ -50,6 +50,7 @@ locals { notebooks = "service-%s@gcp-sa-notebooks" pubsub = "service-%s@gcp-sa-pubsub" secretmanager = "service-%s@gcp-sa-secretmanager" + servicemesh = "service-%s@gcp-sa-servicemesh" sql = "service-%s@gcp-sa-cloud-sql" sqladmin = "service-%s@gcp-sa-cloud-sql" storage = "service-%s@gs-project-accounts" @@ -81,6 +82,7 @@ locals { "gkehub.googleapis.com", # grant roles/gkehub.serviceAgent to fleet "multiclusteringress.googleapis.com", # grant roles/multiclusteringress.serviceAgent to multicluster-ingress "pubsub.googleapis.com", # grant roles/pubsub.serviceAgent to pubsub + "meshconfig.googleapis.com", # grant meshconfig.googleapis.com to meshconfig "secretmanager.googleapis.com", # no grants needed "sqladmin.googleapis.com", # grant roles/cloudsql.serviceAgent to sqladmin (TODO: verify) ] From 36e6367a5c5951f8da6db523a6d99d742ab123e8 Mon Sep 17 00:00:00 2001 From: Valerio Ponza Date: Fri, 24 Feb 2023 16:11:35 +0000 Subject: [PATCH 02/17] adding meshconfig.googleapis.com to JIT list. --- modules/project/service-accounts.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/project/service-accounts.tf b/modules/project/service-accounts.tf index da270192..96563ce0 100644 --- a/modules/project/service-accounts.tf +++ b/modules/project/service-accounts.tf @@ -82,7 +82,7 @@ locals { "gkehub.googleapis.com", # grant roles/gkehub.serviceAgent to fleet "multiclusteringress.googleapis.com", # grant roles/multiclusteringress.serviceAgent to multicluster-ingress "pubsub.googleapis.com", # grant roles/pubsub.serviceAgent to pubsub - "meshconfig.googleapis.com", # grant meshconfig.googleapis.com to meshconfig + "meshconfig.googleapis.com", # grant roles/anthosservicemesh.serviceAgent to meshconfig "secretmanager.googleapis.com", # no grants needed "sqladmin.googleapis.com", # grant roles/cloudsql.serviceAgent to sqladmin (TODO: verify) ] From e56d466e81d39c79dc52be6b6d1ff29adeb51d50 Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 16:14:54 +0000 Subject: [PATCH 03/17] Added a PSC GCLB example --- .../apigee/bigquery-analytics/README.md | 2 +- blueprints/networking/README.md | 8 + .../networking/psc-glb-and-armor/README.md | 114 ++++++++ .../networking/psc-glb-and-armor/consumer.tf | 109 ++++++++ .../networking/psc-glb-and-armor/diagram.png | Bin 0 -> 205611 bytes .../networking/psc-glb-and-armor/producer.tf | 254 ++++++++++++++++++ .../networking/psc-glb-and-armor/providers.tf | 21 ++ .../networking/psc-glb-and-armor/variables.tf | 24 ++ 8 files changed, 531 insertions(+), 1 deletion(-) create mode 100644 blueprints/networking/psc-glb-and-armor/README.md create mode 100644 blueprints/networking/psc-glb-and-armor/consumer.tf create mode 100644 blueprints/networking/psc-glb-and-armor/diagram.png create mode 100644 blueprints/networking/psc-glb-and-armor/producer.tf create mode 100644 blueprints/networking/psc-glb-and-armor/providers.tf create mode 100644 blueprints/networking/psc-glb-and-armor/variables.tf diff --git a/blueprints/apigee/bigquery-analytics/README.md b/blueprints/apigee/bigquery-analytics/README.md index 027f28ea..5309fe17 100644 --- a/blueprints/apigee/bigquery-analytics/README.md +++ b/blueprints/apigee/bigquery-analytics/README.md @@ -19,7 +19,7 @@ Note: This setup only works if you are not using custom analytics. ## Running the blueprint -1. Clone this repository or [open it in cloud shell](https://ssh.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fcloud-foundation-fabric&cloudshell_print=cloud-shell-readme.txt&cloudshell_working_dir=blueprints%2Fapigee%2Fbigquery-analytics), then go through the following steps to create resources: +1. Clone this repository or [open it in cloud shell](https://ssh.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fcloud-foundation-fabric&cloudshell_print=cloud-shell-readme.txt&cloudshell_working_dir=blueprints%2Fnetworking%2Fpsc-glb-and-armor), then go through the following steps to create resources: 2. Copy the file [terraform.tfvars.sample](./terraform.tfvars.sample) to a file called ```terraform.tfvars``` and update the values if required. diff --git a/blueprints/networking/README.md b/blueprints/networking/README.md index ec510d56..e7c0b1ae 100644 --- a/blueprints/networking/README.md +++ b/blueprints/networking/README.md @@ -82,3 +82,11 @@ The emulated on-premises environment can be used to test access to different ser It is meant to be used as a starting point for most Shared VPC configurations, and to be integrated to the above blueprints where Shared VPC is needed in more complex network topologies.
+ +### Exposing applications to the internet via GCLB and Private Service Connect + + This [blueprint](./psc-glb-and-armor/) shows how to configure an external Google Cloud Load Balancer, with a simple Cloud Armor rule to protect against DDOS attacks, to provide an external endpoint to an application provided by another team via Private Service Connect (PSC). + +It is meant to be used as a starting point for users that want to explore PSC to reduce some of the complexity in their network setup. + +
\ No newline at end of file diff --git a/blueprints/networking/psc-glb-and-armor/README.md b/blueprints/networking/psc-glb-and-armor/README.md new file mode 100644 index 00000000..8e1becfa --- /dev/null +++ b/blueprints/networking/psc-glb-and-armor/README.md @@ -0,0 +1,114 @@ +# HTTP Load Balancer with Cloud Armor and Private Service Connect + +## Introduction + +This blueprint contains all necessary Terraform code to configure HTTP load balancing and Google’s advanced WAF security tool (Cloud Armor) on top to securely deploy an application, provided by another team. + +This tutorial is general enough to fit in a variety of use-cases, from hosting a mobile app's backend to deploy proprietary workloads at scale. + +## Architecture + +

+ +The main components that we would be setting up are (to learn more about these products, click on the hyperlinks): + +* [Cloud Armor](https://cloud.google.com/armor) - Google Cloud Armor is the web-application firewall (WAF) and DDoS mitigation service that helps users defend their web apps and services at Google scale at the edge of Google’s network. +* [Cloud Load Balancer](https://cloud.google.com/load-balancing) - When your app usage spikes, it is important to scale, optimize and secure the app. Cloud Load Balancing is a fully distributed solution that balances user traffic to multiple backends to avoid congestion, reduce latency and increase security. Some important features it offers that we use here are: + * Single global anycast IP and autoscaling - CLB acts as a frontend to all your backend instances across all regions. It provides cross-region load balancing, automatic multi-region failover and scales to support increase in resources. + * Global Forwarding Rule - To route traffic to different regions, global load balancers use global forwarding rules, which bind the global IP address and a single target proxy. + * Target Proxy - For external HTTP(S) load balancers, proxies route incoming requests to a URL map. This is essentially how you can handle the connections. + * URL Map - URL Maps are used to route requests to a backend service based on the rules that you define for the host and path of an incoming URL. + * Backend Service - A Backend Service defines CLB distributes traffic. The backend service configuration consists of a set of values - protocols to connect to backends, session settings, health checks and timeouts. + * Health Check - Health check is a method provided to determine if the corresponding backends respond to traffic. Health checks connect to backends on a configurable, periodic basis. Each connection attempt is called a probe. Google Cloud records the success or failure of each probe. +* [Private Service Connect](https://cloud.google.com/vpc/docs/private-service-connect) - Private Service Connect. Private Service Connect allows private consumption of services across VPC networks that belong to different groups, teams, projects, or organizations. You can publish and consume services using IP addresses that you define and that are internal to your VPC network. No VPC peering or VPN is needed between the consumer and produce of the service. +* [Cloud Run](https://cloud.google.com/run) - Cloud Run is a fully managed container runtime on Google Cloud. In this blueprint it's used to host [httpbin](http://httpbin.org/), which is a simple HTTP server application. The setup the blueprint showcases will also work with GCE or GKE, but might need small adjustments. + +This architecture is ideal, if the external Load Balancer and the application are managed by different teams. The application team configures the application using the Internal Load Balancer, they have all the freedom how they evolve and change their implementation. The load balancer team, configures the load balancer and assures security using Cloud Armor. + +In a real world implementation, the IaC code might be split into two separate repositories, and the application team raises changes to the load balancer using a pull request. Also the service attachment in the producer project is configured to allow all connections via `connection_preference = "ACCEPT_AUTOMATIC"` in a real world setup you would want to use a manual white listing instead. + +The Terraform IaC also deploys a VM to the producer VPC network, this VM is only needed for the internal Layer 7 Load Balancer to properly work with Cloud Run, but has no logical function in the setup, no traffic is routed via this machine. + +## Setup + +This solution assumes you already have two projects created and set up where you wish to host these resources. If not, and you would like for the projects to create a new project as well, please refer to the [github repository](https://github.com/GoogleCloudPlatform/cloud-foundation-fabric/tree/master/blueprints/data-solutions/gcs-to-bq-with-least-privileges) for instructions. + +### Prerequisites + +* Have an [organization](https://cloud.google.com/resource-manager/docs/creating-managing-organization) set up in Google cloud. +* Have a [billing account](https://cloud.google.com/billing/docs/how-to/manage-billing-account) set up. +* Have two existing [projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) with [billing enabled](https://cloud.google.com/billing/docs/how-to/modify-project). + +### Roles & Permissions + +In order to spin up this architecture, you will need to be a user with the “__Project owner__” [IAM](https://cloud.google.com/iam) role on the existing project: + +Note: To grant a user a role, take a look at the [Granting and Revoking Access](https://cloud.google.com/iam/docs/granting-changing-revoking-access#grant-single-role) documentation. + +### Spinning up the architecture + +#### Step 1: Cloning the repository + +Click on the button below, sign in if required and when the prompt appears, click on “confirm”. + +[![Open Cloudshell](../../../assets/images/cloud-shell-button.png)](https://ssh.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fcloud-foundation-fabric&cloudshell_print=cloud-shell-readme.txt&cloudshell_working_dir=blueprints%2Fnetworking%2Fpsc-glb-and-armor) + +This will clone the repository to your cloud shell and a screen like this one will appear: + +![cloud_shell](../glb-and-armor/cloud_shell.png) + +Before we deploy the architecture, you will need the following information: + +* The __project IDs__. + +#### Step 2: Deploying the resources + +1. After cloning the repo, and going through the prerequisites, head back to the cloud shell editor. +2. Make sure you’re in the following directory. if not, you can change your directory to it via the ‘cd’ command: + + cloudshell_open/cloud-foundation-fabric/blueprints/cloud-operations/glb_and_armor + +3. Run the following command to initialize the terraform working directory: + + terraform init + +4. Copy the following command into a console and replace __[consumer-project-id]__ and __[produce-project-id]__ with your project’s IDs. Then run the following command to run the terraform script and create all relevant resources for this architecture: + + terraform apply -var consumer_project_id=[consumer-project-id] -var producer_project_id=[producer-project-id] + +The resource creation will take a few minutes… but when it’s complete, you should see an output stating the command completed successfully with a list of the created resources. + +__Congratulations__! You have successfully deployed an HTTP Load Balancer with Cloud Armor security and a PSC based backend server. + +## Testing your architecture + +You can simply invoke the service by calling + + curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" -H "Content-Type: application/json" http://$LB_IP + +## Cleaning up your environment + +The easiest way to remove all the deployed resources is to run the following command in Cloud Shell: + + terraform destroy + +The above command will delete the associated resources so there will be no billable charges made afterwards. + + +## Variables + +| name | description | type | required | default | +|---|---|:---:|:---:|:---:| +| [prefix](variables.tf#L23) | Prefix used for resource names. | string | ✓ | | +| [project_id](variables.tf#L41) | Identifier of the project. | string | ✓ | | +| [enforce_security_policy](variables.tf#L17) | Enforce security policy. | bool | | true | +| [project_create](variables.tf#L32) | Parameters for the creation of the new project. | object({…}) | | null | + +## Outputs + +| name | description | sensitive | +|---|---|:---:| +| [glb_ip_address](outputs.tf#L18) | Load balancer IP address. | | +| [vm_siege_external_ip](outputs.tf#L23) | Siege VM external IP address. | | + + diff --git a/blueprints/networking/psc-glb-and-armor/consumer.tf b/blueprints/networking/psc-glb-and-armor/consumer.tf new file mode 100644 index 00000000..2c14fa23 --- /dev/null +++ b/blueprints/networking/psc-glb-and-armor/consumer.tf @@ -0,0 +1,109 @@ +// Copyright 2023 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. + +locals { + consumer_apis = ["iam.googleapis.com", "compute.googleapis.com"] +} + +data "google_project" "consumer" { + project_id = var.consumer_project_id +} + +resource "google_project_service" "consumer" { + for_each = toset(local.consumer_apis) + project = data.google_project.consumer.project_id + service = each.key + + disable_on_destroy = false +} + +resource "google_compute_region_network_endpoint_group" "psc_neg" { + name = "psc-neg" + region = var.region + project = var.consumer_project_id + network_endpoint_type = "PRIVATE_SERVICE_CONNECT" + psc_target_service = google_compute_service_attachment.psc_ilb_service_attachment.self_link + + network = "default" + subnetwork = "default" +} + +resource "google_compute_global_forwarding_rule" "default" { + project = var.consumer_project_id + name = "global-rule" + load_balancing_scheme = "EXTERNAL_MANAGED" + target = google_compute_target_http_proxy.default.id + port_range = "80" +} + +output "lb_ip" { + value = google_compute_global_forwarding_rule.default.ip_address +} + +resource "google_compute_target_http_proxy" "default" { + project = var.consumer_project_id + name = "target-proxy" + description = "a description" + url_map = google_compute_url_map.default.id +} + +resource "google_compute_url_map" "default" { + project = var.consumer_project_id + name = "url-map-target-proxy" + description = "A simple URL Map, routing all traffic to the PSC NEG" + default_service = google_compute_backend_service.default.id + + host_rule { + hosts = ["*"] + path_matcher = "allpaths" + } + + path_matcher { + name = "allpaths" + default_service = google_compute_backend_service.default.id + + path_rule { + paths = ["/*"] + service = google_compute_backend_service.default.id + } + } +} + +resource "google_compute_security_policy" "policy" { + provider = google-beta + project = var.consumer_project_id + name = "ddos-protection" + adaptive_protection_config { + layer_7_ddos_defense_config { + enable = true + } + } + depends_on = [ + google_project_service.consumer + ] +} + +resource "google_compute_backend_service" "default" { + provider = google-beta + project = var.consumer_project_id + name = "backend" + load_balancing_scheme = "EXTERNAL_MANAGED" + protocol = "HTTPS" + security_policy = google_compute_security_policy.policy.id + backend { + group = google_compute_region_network_endpoint_group.psc_neg.id + balancing_mode = "UTILIZATION" + capacity_scaler = 1.0 + } +} \ No newline at end of file diff --git a/blueprints/networking/psc-glb-and-armor/diagram.png b/blueprints/networking/psc-glb-and-armor/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..d72625a57905785e4fa4093ab8029a58664e0945 GIT binary patch literal 205611 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

^tZG&n$eiFo^@pHI{Ps3zz}DCk)-xzkX-X% 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 Date: Fri, 24 Feb 2023 16:18:05 +0000 Subject: [PATCH 04/17] formatted terraform --- blueprints/networking/psc-glb-and-armor/producer.tf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/blueprints/networking/psc-glb-and-armor/producer.tf b/blueprints/networking/psc-glb-and-armor/producer.tf index 59b5448b..adc311d5 100644 --- a/blueprints/networking/psc-glb-and-armor/producer.tf +++ b/blueprints/networking/psc-glb-and-armor/producer.tf @@ -65,7 +65,7 @@ resource "google_cloud_run_service" "app" { "run.googleapis.com/ingress" = "internal-and-cloud-load-balancing" } } - + depends_on = [ google_project_service.producer ] @@ -227,16 +227,16 @@ resource "google_compute_service_attachment" "psc_ilb_service_attachment" { } resource "google_service_account" "noop" { - project = var.producer_project_id + project = var.producer_project_id account_id = "noop-sa" display_name = "Service Account for NOOP VM" } resource "google_compute_instance" "noop-vm" { - project = var.producer_project_id + project = var.producer_project_id name = "noop-ilb-vm" machine_type = "e2-medium" - zone = data.google_compute_zones.available.names[0] + zone = data.google_compute_zones.available.names[0] boot_disk { initialize_params { image = "debian-cloud/debian-11" @@ -244,7 +244,7 @@ resource "google_compute_instance" "noop-vm" { } network_interface { - network = google_compute_network.psc_ilb_network.id + network = google_compute_network.psc_ilb_network.id subnetwork = google_compute_subnetwork.vms.id } service_account { From 73764e382763584f5d41f10fcd3d4e381526f6b6 Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 16:21:02 +0000 Subject: [PATCH 05/17] Added license boilerplate with block comment instead of line comment --- .../networking/psc-glb-and-armor/consumer.tf | 28 ++++++++++--------- .../networking/psc-glb-and-armor/producer.tf | 28 ++++++++++--------- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/blueprints/networking/psc-glb-and-armor/consumer.tf b/blueprints/networking/psc-glb-and-armor/consumer.tf index 2c14fa23..c2d2d998 100644 --- a/blueprints/networking/psc-glb-and-armor/consumer.tf +++ b/blueprints/networking/psc-glb-and-armor/consumer.tf @@ -1,16 +1,18 @@ -// Copyright 2023 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. +/** + * Copyright 2023 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. + */ locals { consumer_apis = ["iam.googleapis.com", "compute.googleapis.com"] diff --git a/blueprints/networking/psc-glb-and-armor/producer.tf b/blueprints/networking/psc-glb-and-armor/producer.tf index adc311d5..35a4cfdd 100644 --- a/blueprints/networking/psc-glb-and-armor/producer.tf +++ b/blueprints/networking/psc-glb-and-armor/producer.tf @@ -1,16 +1,18 @@ -// Copyright 2023 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. +/** + * Copyright 2023 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. + */ locals { producer_apis = ["iam.googleapis.com", "run.googleapis.com", "compute.googleapis.com"] From 3d8822d365b0fc7e4cb6e0aa15fe95ebdb05b963 Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 16:39:39 +0000 Subject: [PATCH 06/17] fixed tfdocs --- blueprints/networking/psc-glb-and-armor/README.md | 14 +++----------- .../networking/psc-glb-and-armor/variables.tf | 3 +++ 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/blueprints/networking/psc-glb-and-armor/README.md b/blueprints/networking/psc-glb-and-armor/README.md index 8e1becfa..ee87d306 100644 --- a/blueprints/networking/psc-glb-and-armor/README.md +++ b/blueprints/networking/psc-glb-and-armor/README.md @@ -99,16 +99,8 @@ The above command will delete the associated resources so there will be no billa | name | description | type | required | default | |---|---|:---:|:---:|:---:| -| [prefix](variables.tf#L23) | Prefix used for resource names. | string | ✓ | | -| [project_id](variables.tf#L41) | Identifier of the project. | string | ✓ | | -| [enforce_security_policy](variables.tf#L17) | Enforce security policy. | bool | | true | -| [project_create](variables.tf#L32) | Parameters for the creation of the new project. | object({…}) | | null | - -## Outputs - -| name | description | sensitive | -|---|---|:---:| -| [glb_ip_address](outputs.tf#L18) | Load balancer IP address. | | -| [vm_siege_external_ip](outputs.tf#L23) | Siege VM external IP address. | | +| [consumer_project_id](variables.tf#L17) | The consumer project, in which the GCLB and Cloud Armor should be created. | | ✓ | | +| [producer_project_id](variables.tf#L20) | The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created | | ✓ | | +| [region](variables.tf#L24) | The GCP region in which the resources should be deployed. | | | europe-west1 | diff --git a/blueprints/networking/psc-glb-and-armor/variables.tf b/blueprints/networking/psc-glb-and-armor/variables.tf index 9a3c91b2..76c20ae2 100644 --- a/blueprints/networking/psc-glb-and-armor/variables.tf +++ b/blueprints/networking/psc-glb-and-armor/variables.tf @@ -15,10 +15,13 @@ */ variable "consumer_project_id" { + description = "The consumer project, in which the GCLB and Cloud Armor should be created." } variable "producer_project_id" { + description = "The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created" } variable "region" { default = "europe-west1" + description = "The GCP region in which the resources should be deployed." } \ No newline at end of file From d97426633e074642da6fa3af84a0009578bf7dce Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 17:02:50 +0000 Subject: [PATCH 07/17] Updated docs and added test --- .../networking/psc-glb-and-armor/README.md | 9 ++- .../networking/psc-glb-and-armor/consumer.tf | 37 ++++----- .../networking/psc-glb-and-armor/producer.tf | 77 +++++++------------ .../networking/psc-glb-and-armor/providers.tf | 21 ----- .../networking/psc-glb-and-armor/variables.tf | 21 +++++ .../networking/psc-glb-and-armor/__init__.py | 13 ++++ .../psc-glb-and-armor/fixture/main.tf | 21 +++++ .../psc-glb-and-armor/fixture/variables.tf | 33 ++++++++ .../networking/psc-glb-and-armor/test_plan.py | 19 +++++ 9 files changed, 153 insertions(+), 98 deletions(-) delete mode 100644 blueprints/networking/psc-glb-and-armor/providers.tf create mode 100644 tests/blueprints/networking/psc-glb-and-armor/__init__.py create mode 100644 tests/blueprints/networking/psc-glb-and-armor/fixture/main.tf create mode 100644 tests/blueprints/networking/psc-glb-and-armor/fixture/variables.tf create mode 100644 tests/blueprints/networking/psc-glb-and-armor/test_plan.py diff --git a/blueprints/networking/psc-glb-and-armor/README.md b/blueprints/networking/psc-glb-and-armor/README.md index ee87d306..11df26e5 100644 --- a/blueprints/networking/psc-glb-and-armor/README.md +++ b/blueprints/networking/psc-glb-and-armor/README.md @@ -99,8 +99,11 @@ The above command will delete the associated resources so there will be no billa | name | description | type | required | default | |---|---|:---:|:---:|:---:| -| [consumer_project_id](variables.tf#L17) | The consumer project, in which the GCLB and Cloud Armor should be created. | | ✓ | | -| [producer_project_id](variables.tf#L20) | The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created | | ✓ | | -| [region](variables.tf#L24) | The GCP region in which the resources should be deployed. | | | europe-west1 | +| [consumer_project_id](variables.tf#L32) | The consumer project, in which the GCLB and Cloud Armor should be created. | | ✓ | | +| [prefix](variables.tf#L17) | Prefix used for resource names. | string | ✓ | | +| [producer_project_id](variables.tf#L36) | The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created | | ✓ | | +| [project_create](variables.tf#L26) | Create project instead of using an existing one. | bool | | false | +| [region](variables.tf#L40) | The GCP region in which the resources should be deployed. | | | europe-west1 | +| [zone](variables.tf#L45) | The GCP zone for the VM. | | | europe-west1-b | diff --git a/blueprints/networking/psc-glb-and-armor/consumer.tf b/blueprints/networking/psc-glb-and-armor/consumer.tf index c2d2d998..55d2f06a 100644 --- a/blueprints/networking/psc-glb-and-armor/consumer.tf +++ b/blueprints/networking/psc-glb-and-armor/consumer.tf @@ -14,26 +14,20 @@ * limitations under the License. */ -locals { - consumer_apis = ["iam.googleapis.com", "compute.googleapis.com"] -} - -data "google_project" "consumer" { - project_id = var.consumer_project_id -} - -resource "google_project_service" "consumer" { - for_each = toset(local.consumer_apis) - project = data.google_project.consumer.project_id - service = each.key - - disable_on_destroy = false +module "consumer_project" { + source = "../../../modules/project" + name = var.consumer_project_id + project_create = var.project_create + services = [ + "iam.googleapis.com", + "compute.googleapis.com", + ] } resource "google_compute_region_network_endpoint_group" "psc_neg" { name = "psc-neg" region = var.region - project = var.consumer_project_id + project = module.consumer_project.project_id network_endpoint_type = "PRIVATE_SERVICE_CONNECT" psc_target_service = google_compute_service_attachment.psc_ilb_service_attachment.self_link @@ -42,7 +36,7 @@ resource "google_compute_region_network_endpoint_group" "psc_neg" { } resource "google_compute_global_forwarding_rule" "default" { - project = var.consumer_project_id + project = module.consumer_project.project_id name = "global-rule" load_balancing_scheme = "EXTERNAL_MANAGED" target = google_compute_target_http_proxy.default.id @@ -54,14 +48,14 @@ output "lb_ip" { } resource "google_compute_target_http_proxy" "default" { - project = var.consumer_project_id + project = module.consumer_project.project_id name = "target-proxy" description = "a description" url_map = google_compute_url_map.default.id } resource "google_compute_url_map" "default" { - project = var.consumer_project_id + project = module.consumer_project.project_id name = "url-map-target-proxy" description = "A simple URL Map, routing all traffic to the PSC NEG" default_service = google_compute_backend_service.default.id @@ -84,21 +78,18 @@ resource "google_compute_url_map" "default" { resource "google_compute_security_policy" "policy" { provider = google-beta - project = var.consumer_project_id + project = module.consumer_project.project_id name = "ddos-protection" adaptive_protection_config { layer_7_ddos_defense_config { enable = true } } - depends_on = [ - google_project_service.consumer - ] } resource "google_compute_backend_service" "default" { provider = google-beta - project = var.consumer_project_id + project = module.consumer_project.project_id name = "backend" load_balancing_scheme = "EXTERNAL_MANAGED" protocol = "HTTPS" diff --git a/blueprints/networking/psc-glb-and-armor/producer.tf b/blueprints/networking/psc-glb-and-armor/producer.tf index 35a4cfdd..5755aff1 100644 --- a/blueprints/networking/psc-glb-and-armor/producer.tf +++ b/blueprints/networking/psc-glb-and-armor/producer.tf @@ -14,36 +14,27 @@ * limitations under the License. */ -locals { - producer_apis = ["iam.googleapis.com", "run.googleapis.com", "compute.googleapis.com"] -} - -data "google_project" "producer" { - project_id = var.producer_project_id -} - -resource "google_project_service" "producer" { - for_each = toset(local.producer_apis) - project = data.google_project.producer.project_id - service = each.key - - disable_on_destroy = false +module "producer_project" { + source = "../../../modules/project" + name = var.producer_project_id + project_create = var.project_create + services = [ + "iam.googleapis.com", + "run.googleapis.com", + "compute.googleapis.com", + ] } resource "google_service_account" "app" { - project = var.producer_project_id + project = module.producer_project.project_id account_id = "example-app" display_name = "Example App Service Account" - - depends_on = [ - google_project_service.producer - ] } resource "google_cloud_run_service" "app" { name = "example-app" location = var.region - project = var.producer_project_id + project = module.producer_project.project_id template { spec { @@ -67,17 +58,13 @@ resource "google_cloud_run_service" "app" { "run.googleapis.com/ingress" = "internal-and-cloud-load-balancing" } } - - depends_on = [ - google_project_service.producer - ] } resource "google_compute_region_network_endpoint_group" "neg" { name = "example-app-neg" network_endpoint_type = "SERVERLESS" region = var.region - project = var.producer_project_id + project = module.producer_project.project_id cloud_run { service = google_cloud_run_service.app.name } @@ -86,7 +73,7 @@ resource "google_compute_region_network_endpoint_group" "neg" { resource "google_compute_forwarding_rule" "psc_ilb_target_service" { name = "producer-forwarding-rule" region = var.region - project = var.producer_project_id + project = module.producer_project.project_id load_balancing_scheme = "INTERNAL_MANAGED" port_range = "443" @@ -101,14 +88,14 @@ resource "google_compute_region_target_https_proxy" "default" { name = "l7-ilb-target-http-proxy" provider = google-beta region = var.region - project = var.producer_project_id + project = module.producer_project.project_id url_map = google_compute_region_url_map.default.id ssl_certificates = [google_compute_region_ssl_certificate.default.id] } resource "google_compute_region_ssl_certificate" "default" { region = var.region - project = var.producer_project_id + project = module.producer_project.project_id name = "my-certificate" private_key = tls_private_key.example.private_key_pem certificate = tls_self_signed_cert.example.cert_pem @@ -118,7 +105,7 @@ resource "google_compute_region_url_map" "default" { name = "l7-ilb-regional-url-map" provider = google-beta region = var.region - project = var.producer_project_id + project = module.producer_project.project_id default_service = google_compute_region_backend_service.producer_service_backend.id } @@ -146,7 +133,7 @@ resource "tls_self_signed_cert" "example" { resource "google_compute_region_backend_service" "producer_service_backend" { name = "producer-service" region = var.region - project = var.producer_project_id + project = module.producer_project.project_id load_balancing_scheme = "INTERNAL_MANAGED" protocol = "HTTPS" @@ -160,16 +147,13 @@ resource "google_compute_region_backend_service" "producer_service_backend" { resource "google_compute_network" "psc_ilb_network" { name = "psc-ilb-network" auto_create_subnetworks = false - project = var.producer_project_id - depends_on = [ - google_project_service.consumer - ] + project = module.producer_project.project_id } resource "google_compute_subnetwork" "ilb_subnetwork" { name = "ilb-subnetwork" region = var.region - project = var.producer_project_id + project = module.producer_project.project_id network = google_compute_network.psc_ilb_network.id ip_cidr_range = "10.0.0.0/16" @@ -180,7 +164,7 @@ resource "google_compute_subnetwork" "ilb_subnetwork" { resource "google_compute_subnetwork" "psc_private_subnetwork" { name = "psc-private-subnetwork" region = var.region - project = var.producer_project_id + project = module.producer_project.project_id network = google_compute_network.psc_ilb_network.id ip_cidr_range = "10.3.0.0/16" @@ -191,7 +175,7 @@ resource "google_compute_subnetwork" "psc_private_subnetwork" { resource "google_compute_subnetwork" "psc_ilb_nat" { name = "psc-ilb-nat" region = var.region - project = var.producer_project_id + project = module.producer_project.project_id network = google_compute_network.psc_ilb_network.id purpose = "PRIVATE_SERVICE_CONNECT" @@ -201,44 +185,35 @@ resource "google_compute_subnetwork" "psc_ilb_nat" { resource "google_compute_subnetwork" "vms" { name = "vms" region = var.region - project = var.producer_project_id + project = module.producer_project.project_id network = google_compute_network.psc_ilb_network.id ip_cidr_range = "10.4.0.0/16" } -data "google_compute_zones" "available" { - region = var.region - project = var.producer_project_id -} - resource "google_compute_service_attachment" "psc_ilb_service_attachment" { name = "my-psc-ilb" region = var.region - project = var.producer_project_id + project = module.producer_project.project_id description = "A service attachment configured with Terraform" enable_proxy_protocol = false connection_preference = "ACCEPT_AUTOMATIC" nat_subnets = [google_compute_subnetwork.psc_ilb_nat.id] target_service = google_compute_forwarding_rule.psc_ilb_target_service.id - - depends_on = [ - google_project_service.consumer - ] } resource "google_service_account" "noop" { - project = var.producer_project_id + project = module.producer_project.project_id account_id = "noop-sa" display_name = "Service Account for NOOP VM" } resource "google_compute_instance" "noop-vm" { - project = var.producer_project_id + project = module.producer_project.project_id name = "noop-ilb-vm" machine_type = "e2-medium" - zone = data.google_compute_zones.available.names[0] + zone = var.zone boot_disk { initialize_params { image = "debian-cloud/debian-11" diff --git a/blueprints/networking/psc-glb-and-armor/providers.tf b/blueprints/networking/psc-glb-and-armor/providers.tf deleted file mode 100644 index d8c741d1..00000000 --- a/blueprints/networking/psc-glb-and-armor/providers.tf +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright 2023 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. - */ - -provider "google" { -} - -provider "google-beta" { -} \ No newline at end of file diff --git a/blueprints/networking/psc-glb-and-armor/variables.tf b/blueprints/networking/psc-glb-and-armor/variables.tf index 76c20ae2..cf80d4d5 100644 --- a/blueprints/networking/psc-glb-and-armor/variables.tf +++ b/blueprints/networking/psc-glb-and-armor/variables.tf @@ -14,9 +14,25 @@ * limitations under the License. */ +variable "prefix" { + description = "Prefix used for resource names." + type = string + validation { + condition = var.prefix != "" + error_message = "Prefix cannot be empty." + } +} + +variable "project_create" { + description = "Create project instead of using an existing one." + type = bool + default = false +} + variable "consumer_project_id" { description = "The consumer project, in which the GCLB and Cloud Armor should be created." } + variable "producer_project_id" { description = "The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created" } @@ -24,4 +40,9 @@ variable "producer_project_id" { variable "region" { default = "europe-west1" description = "The GCP region in which the resources should be deployed." +} + +variable "zone" { + default = "europe-west1-b" + description = "The GCP zone for the VM." } \ No newline at end of file diff --git a/tests/blueprints/networking/psc-glb-and-armor/__init__.py b/tests/blueprints/networking/psc-glb-and-armor/__init__.py new file mode 100644 index 00000000..6d6d1266 --- /dev/null +++ b/tests/blueprints/networking/psc-glb-and-armor/__init__.py @@ -0,0 +1,13 @@ +# 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. diff --git a/tests/blueprints/networking/psc-glb-and-armor/fixture/main.tf b/tests/blueprints/networking/psc-glb-and-armor/fixture/main.tf new file mode 100644 index 00000000..0a19401a --- /dev/null +++ b/tests/blueprints/networking/psc-glb-and-armor/fixture/main.tf @@ -0,0 +1,21 @@ +# 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 +# +# https://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. + +module "test" { + source = "../../../../../blueprints/networking/psc-glb-and-armor" + prefix = var.prefix + project_create = var.project_create + consumer_project_id = var.consumer_project_id + producer_project_id = var.producer_project_id +} diff --git a/tests/blueprints/networking/psc-glb-and-armor/fixture/variables.tf b/tests/blueprints/networking/psc-glb-and-armor/fixture/variables.tf new file mode 100644 index 00000000..5165531d --- /dev/null +++ b/tests/blueprints/networking/psc-glb-and-armor/fixture/variables.tf @@ -0,0 +1,33 @@ +# 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 +# +# https://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. + +variable "producer_project_id" { + type = string + default = "project-1" +} + +variable "consumer_project_id" { + type = string + default = "project-2" +} + +variable "prefix" { + type = string + default = "test" +} + +variable "project_create" { + type = bool + default = true +} diff --git a/tests/blueprints/networking/psc-glb-and-armor/test_plan.py b/tests/blueprints/networking/psc-glb-and-armor/test_plan.py new file mode 100644 index 00000000..9bc8ff46 --- /dev/null +++ b/tests/blueprints/networking/psc-glb-and-armor/test_plan.py @@ -0,0 +1,19 @@ +# 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. + +def test_resources(e2e_plan_runner): + "Test that plan works and the numbers of resources is as expected." + modules, resources = e2e_plan_runner() + assert len(modules) == 2 + assert len(resources) == 7 From c9915b11a4f403c2f7adf33270a8a53cdaaae5aa Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 17:27:49 +0000 Subject: [PATCH 08/17] Fixed variable order --- blueprints/networking/psc-glb-and-armor/variables.tf | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/blueprints/networking/psc-glb-and-armor/variables.tf b/blueprints/networking/psc-glb-and-armor/variables.tf index cf80d4d5..3a71e7c6 100644 --- a/blueprints/networking/psc-glb-and-armor/variables.tf +++ b/blueprints/networking/psc-glb-and-armor/variables.tf @@ -31,18 +31,22 @@ variable "project_create" { variable "consumer_project_id" { description = "The consumer project, in which the GCLB and Cloud Armor should be created." + type = string } variable "producer_project_id" { description = "The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created" + type = string } variable "region" { - default = "europe-west1" description = "The GCP region in which the resources should be deployed." + type = string + default = "europe-west1" } variable "zone" { - default = "europe-west1-b" description = "The GCP zone for the VM." + type = string + default = "europe-west1-b" } \ No newline at end of file From 21c56abc2276735252d55fb3c522d277b6f96213 Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 17:29:50 +0000 Subject: [PATCH 09/17] fixed terraform fmt --- blueprints/networking/psc-glb-and-armor/variables.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blueprints/networking/psc-glb-and-armor/variables.tf b/blueprints/networking/psc-glb-and-armor/variables.tf index 3a71e7c6..eb7d0705 100644 --- a/blueprints/networking/psc-glb-and-armor/variables.tf +++ b/blueprints/networking/psc-glb-and-armor/variables.tf @@ -42,11 +42,11 @@ variable "producer_project_id" { variable "region" { description = "The GCP region in which the resources should be deployed." type = string - default = "europe-west1" + default = "europe-west1" } variable "zone" { description = "The GCP zone for the VM." type = string - default = "europe-west1-b" + default = "europe-west1-b" } \ No newline at end of file From b21c57d193d601ec096d17eb3fdfc8469b7f407a Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 17:41:53 +0000 Subject: [PATCH 10/17] moved to new test style --- .../networking/psc-glb-and-armor/README.md | 14 ++++++++ .../networking/psc-glb-and-armor/__init__.py | 13 -------- .../psc-glb-and-armor/fixture/main.tf | 21 ------------ .../psc-glb-and-armor/fixture/variables.tf | 33 ------------------- .../networking/psc-glb-and-armor/test_plan.py | 19 ----------- 5 files changed, 14 insertions(+), 86 deletions(-) delete mode 100644 tests/blueprints/networking/psc-glb-and-armor/__init__.py delete mode 100644 tests/blueprints/networking/psc-glb-and-armor/fixture/main.tf delete mode 100644 tests/blueprints/networking/psc-glb-and-armor/fixture/variables.tf delete mode 100644 tests/blueprints/networking/psc-glb-and-armor/test_plan.py diff --git a/blueprints/networking/psc-glb-and-armor/README.md b/blueprints/networking/psc-glb-and-armor/README.md index 11df26e5..e0d99641 100644 --- a/blueprints/networking/psc-glb-and-armor/README.md +++ b/blueprints/networking/psc-glb-and-armor/README.md @@ -107,3 +107,17 @@ The above command will delete the associated resources so there will be no billa | [zone](variables.tf#L45) | The GCP zone for the VM. | | | europe-west1-b | + + +## Test + +```hcl +module "psc-glb-and-armor-test" { + source = "./fabric/blueprints/networking/psc-glb-and-armor" + prefix = "test" + project_create = true + consumer_project_id = "project-1" + producer_project_id = "project-2" +} +# tftest modules=3 resources=31 +``` diff --git a/tests/blueprints/networking/psc-glb-and-armor/__init__.py b/tests/blueprints/networking/psc-glb-and-armor/__init__.py deleted file mode 100644 index 6d6d1266..00000000 --- a/tests/blueprints/networking/psc-glb-and-armor/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# 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. diff --git a/tests/blueprints/networking/psc-glb-and-armor/fixture/main.tf b/tests/blueprints/networking/psc-glb-and-armor/fixture/main.tf deleted file mode 100644 index 0a19401a..00000000 --- a/tests/blueprints/networking/psc-glb-and-armor/fixture/main.tf +++ /dev/null @@ -1,21 +0,0 @@ -# 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 -# -# https://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. - -module "test" { - source = "../../../../../blueprints/networking/psc-glb-and-armor" - prefix = var.prefix - project_create = var.project_create - consumer_project_id = var.consumer_project_id - producer_project_id = var.producer_project_id -} diff --git a/tests/blueprints/networking/psc-glb-and-armor/fixture/variables.tf b/tests/blueprints/networking/psc-glb-and-armor/fixture/variables.tf deleted file mode 100644 index 5165531d..00000000 --- a/tests/blueprints/networking/psc-glb-and-armor/fixture/variables.tf +++ /dev/null @@ -1,33 +0,0 @@ -# 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 -# -# https://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. - -variable "producer_project_id" { - type = string - default = "project-1" -} - -variable "consumer_project_id" { - type = string - default = "project-2" -} - -variable "prefix" { - type = string - default = "test" -} - -variable "project_create" { - type = bool - default = true -} diff --git a/tests/blueprints/networking/psc-glb-and-armor/test_plan.py b/tests/blueprints/networking/psc-glb-and-armor/test_plan.py deleted file mode 100644 index 9bc8ff46..00000000 --- a/tests/blueprints/networking/psc-glb-and-armor/test_plan.py +++ /dev/null @@ -1,19 +0,0 @@ -# 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. - -def test_resources(e2e_plan_runner): - "Test that plan works and the numbers of resources is as expected." - modules, resources = e2e_plan_runner() - assert len(modules) == 2 - assert len(resources) == 7 From f09a70419994b124538a9a9de66cf9ef41d18ff3 Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 17:43:04 +0000 Subject: [PATCH 11/17] fixed accidental update --- blueprints/apigee/bigquery-analytics/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blueprints/apigee/bigquery-analytics/README.md b/blueprints/apigee/bigquery-analytics/README.md index 5309fe17..027f28ea 100644 --- a/blueprints/apigee/bigquery-analytics/README.md +++ b/blueprints/apigee/bigquery-analytics/README.md @@ -19,7 +19,7 @@ Note: This setup only works if you are not using custom analytics. ## Running the blueprint -1. Clone this repository or [open it in cloud shell](https://ssh.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fcloud-foundation-fabric&cloudshell_print=cloud-shell-readme.txt&cloudshell_working_dir=blueprints%2Fnetworking%2Fpsc-glb-and-armor), then go through the following steps to create resources: +1. Clone this repository or [open it in cloud shell](https://ssh.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fcloud-foundation-fabric&cloudshell_print=cloud-shell-readme.txt&cloudshell_working_dir=blueprints%2Fapigee%2Fbigquery-analytics), then go through the following steps to create resources: 2. Copy the file [terraform.tfvars.sample](./terraform.tfvars.sample) to a file called ```terraform.tfvars``` and update the values if required. From 7021682746b55d1417c11416e727336c688e9546 Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 17:44:19 +0000 Subject: [PATCH 12/17] tfdoc again --- blueprints/networking/psc-glb-and-armor/README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/blueprints/networking/psc-glb-and-armor/README.md b/blueprints/networking/psc-glb-and-armor/README.md index e0d99641..eafe4c99 100644 --- a/blueprints/networking/psc-glb-and-armor/README.md +++ b/blueprints/networking/psc-glb-and-armor/README.md @@ -99,16 +99,14 @@ The above command will delete the associated resources so there will be no billa | name | description | type | required | default | |---|---|:---:|:---:|:---:| -| [consumer_project_id](variables.tf#L32) | The consumer project, in which the GCLB and Cloud Armor should be created. | | ✓ | | +| [consumer_project_id](variables.tf#L32) | The consumer project, in which the GCLB and Cloud Armor should be created. | string | ✓ | | | [prefix](variables.tf#L17) | Prefix used for resource names. | string | ✓ | | -| [producer_project_id](variables.tf#L36) | The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created | | ✓ | | +| [producer_project_id](variables.tf#L37) | The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created | string | ✓ | | | [project_create](variables.tf#L26) | Create project instead of using an existing one. | bool | | false | -| [region](variables.tf#L40) | The GCP region in which the resources should be deployed. | | | europe-west1 | -| [zone](variables.tf#L45) | The GCP zone for the VM. | | | europe-west1-b | +| [region](variables.tf#L42) | The GCP region in which the resources should be deployed. | string | | "europe-west1" | +| [zone](variables.tf#L48) | The GCP zone for the VM. | string | | "europe-west1-b" | - - ## Test ```hcl From 12d70832d2fa05b10edb75c4d941bddd8a220c67 Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 17:49:51 +0000 Subject: [PATCH 13/17] fixed variables and outputs --- .../networking/psc-glb-and-armor/README.md | 14 +++++++++---- .../networking/psc-glb-and-armor/consumer.tf | 4 ---- .../networking/psc-glb-and-armor/outputs.tf | 20 +++++++++++++++++++ .../networking/psc-glb-and-armor/variables.tf | 20 +++++++++---------- 4 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 blueprints/networking/psc-glb-and-armor/outputs.tf diff --git a/blueprints/networking/psc-glb-and-armor/README.md b/blueprints/networking/psc-glb-and-armor/README.md index eafe4c99..a4074722 100644 --- a/blueprints/networking/psc-glb-and-armor/README.md +++ b/blueprints/networking/psc-glb-and-armor/README.md @@ -99,13 +99,19 @@ The above command will delete the associated resources so there will be no billa | name | description | type | required | default | |---|---|:---:|:---:|:---:| -| [consumer_project_id](variables.tf#L32) | The consumer project, in which the GCLB and Cloud Armor should be created. | string | ✓ | | -| [prefix](variables.tf#L17) | Prefix used for resource names. | string | ✓ | | -| [producer_project_id](variables.tf#L37) | The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created | string | ✓ | | -| [project_create](variables.tf#L26) | Create project instead of using an existing one. | bool | | false | +| [consumer_project_id](variables.tf#L17) | The consumer project, in which the GCLB and Cloud Armor should be created. | string | ✓ | | +| [prefix](variables.tf#L22) | Prefix used for resource names. | string | ✓ | | +| [producer_project_id](variables.tf#L31) | The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created | string | ✓ | | +| [project_create](variables.tf#L36) | Create project instead of using an existing one. | bool | | false | | [region](variables.tf#L42) | The GCP region in which the resources should be deployed. | string | | "europe-west1" | | [zone](variables.tf#L48) | The GCP zone for the VM. | string | | "europe-west1-b" | +## Outputs + +| name | description | sensitive | +|---|---|:---:| +| [lb_ip](outputs.tf#L17) | Load balancer IP address. | | + ## Test diff --git a/blueprints/networking/psc-glb-and-armor/consumer.tf b/blueprints/networking/psc-glb-and-armor/consumer.tf index 55d2f06a..4e02c9e0 100644 --- a/blueprints/networking/psc-glb-and-armor/consumer.tf +++ b/blueprints/networking/psc-glb-and-armor/consumer.tf @@ -43,10 +43,6 @@ resource "google_compute_global_forwarding_rule" "default" { port_range = "80" } -output "lb_ip" { - value = google_compute_global_forwarding_rule.default.ip_address -} - resource "google_compute_target_http_proxy" "default" { project = module.consumer_project.project_id name = "target-proxy" diff --git a/blueprints/networking/psc-glb-and-armor/outputs.tf b/blueprints/networking/psc-glb-and-armor/outputs.tf new file mode 100644 index 00000000..95d6dedf --- /dev/null +++ b/blueprints/networking/psc-glb-and-armor/outputs.tf @@ -0,0 +1,20 @@ +/** + * Copyright 2023 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. + */ + +output "lb_ip" { + description = "Load balancer IP address." + value = google_compute_global_forwarding_rule.default.ip_address +} diff --git a/blueprints/networking/psc-glb-and-armor/variables.tf b/blueprints/networking/psc-glb-and-armor/variables.tf index eb7d0705..beb2a8c1 100644 --- a/blueprints/networking/psc-glb-and-armor/variables.tf +++ b/blueprints/networking/psc-glb-and-armor/variables.tf @@ -14,6 +14,11 @@ * limitations under the License. */ +variable "consumer_project_id" { + description = "The consumer project, in which the GCLB and Cloud Armor should be created." + type = string +} + variable "prefix" { description = "Prefix used for resource names." type = string @@ -23,22 +28,17 @@ variable "prefix" { } } +variable "producer_project_id" { + description = "The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created" + type = string +} + variable "project_create" { description = "Create project instead of using an existing one." type = bool default = false } -variable "consumer_project_id" { - description = "The consumer project, in which the GCLB and Cloud Armor should be created." - type = string -} - -variable "producer_project_id" { - description = "The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created" - type = string -} - variable "region" { description = "The GCP region in which the resources should be deployed." type = string From 0496b26f6230da0442682684cd6294d3a84f06ab Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 17:50:41 +0000 Subject: [PATCH 14/17] terraform fmt of outputs --- blueprints/networking/psc-glb-and-armor/outputs.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blueprints/networking/psc-glb-and-armor/outputs.tf b/blueprints/networking/psc-glb-and-armor/outputs.tf index 95d6dedf..b8e50ed4 100644 --- a/blueprints/networking/psc-glb-and-armor/outputs.tf +++ b/blueprints/networking/psc-glb-and-armor/outputs.tf @@ -16,5 +16,5 @@ output "lb_ip" { description = "Load balancer IP address." - value = google_compute_global_forwarding_rule.default.ip_address + value = google_compute_global_forwarding_rule.default.ip_address } From f65b15a62bbc793c5c9a9dc4e2c55ccdf3e93722 Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 17:52:56 +0000 Subject: [PATCH 15/17] added period --- blueprints/networking/psc-glb-and-armor/variables.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blueprints/networking/psc-glb-and-armor/variables.tf b/blueprints/networking/psc-glb-and-armor/variables.tf index beb2a8c1..b8715ea6 100644 --- a/blueprints/networking/psc-glb-and-armor/variables.tf +++ b/blueprints/networking/psc-glb-and-armor/variables.tf @@ -29,7 +29,7 @@ variable "prefix" { } variable "producer_project_id" { - description = "The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created" + description = "The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created." type = string } From 5003a6f37a31f536992ea11e6857d9dbdc0748cb Mon Sep 17 00:00:00 2001 From: Christoph Grotz Date: Fri, 24 Feb 2023 17:53:10 +0000 Subject: [PATCH 16/17] tfdoc again --- blueprints/networking/psc-glb-and-armor/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blueprints/networking/psc-glb-and-armor/README.md b/blueprints/networking/psc-glb-and-armor/README.md index a4074722..c9e101e8 100644 --- a/blueprints/networking/psc-glb-and-armor/README.md +++ b/blueprints/networking/psc-glb-and-armor/README.md @@ -101,7 +101,7 @@ The above command will delete the associated resources so there will be no billa |---|---|:---:|:---:|:---:| | [consumer_project_id](variables.tf#L17) | The consumer project, in which the GCLB and Cloud Armor should be created. | string | ✓ | | | [prefix](variables.tf#L22) | Prefix used for resource names. | string | ✓ | | -| [producer_project_id](variables.tf#L31) | The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created | string | ✓ | | +| [producer_project_id](variables.tf#L31) | The producer project, in which the ILB, PSC Service Attachment and Cloud Run service should be created. | string | ✓ | | | [project_create](variables.tf#L36) | Create project instead of using an existing one. | bool | | false | | [region](variables.tf#L42) | The GCP region in which the resources should be deployed. | string | | "europe-west1" | | [zone](variables.tf#L48) | The GCP zone for the VM. | string | | "europe-west1-b" | From 899960c24750c302ddf2561efe245de0d1ac5f18 Mon Sep 17 00:00:00 2001 From: Julio Castillo Date: Fri, 24 Feb 2023 19:14:43 +0100 Subject: [PATCH 17/17] Fix tests --- modules/gke-hub/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/gke-hub/README.md b/modules/gke-hub/README.md index 793a81ca..ed80af55 100644 --- a/modules/gke-hub/README.md +++ b/modules/gke-hub/README.md @@ -314,7 +314,7 @@ module "hub" { ] } -# tftest modules=8 resources=31 +# tftest modules=8 resources=32 ```