Merge branch 'master' into 1849-implement-cloud-run-module-version-2

This commit is contained in:
Julio Diez
2023-12-21 22:11:20 +01:00
committed by GitHub
155 changed files with 12110 additions and 614 deletions

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -53,7 +53,7 @@ module "bucket" {
location = "EU"
}
# tftest skip e2e
# tftest modules=3 skip e2e
```
### Example with retention policy and logging

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -1,100 +1,134 @@
# Google Cloud VMWare Engine Private Cloud Module
This module implements the creation and management of a Google Cloud VMWare Engine Private Cloud with its management cluster. If configured, it also creates the VMWare engine network or it can work with an existing one. The creation of the private connection with the user VPC requires the execution of the [Google SDK command](https://cloud.google.com/sdk/gcloud/reference/vmware/private-connections/create#--routing-mode) the module provides as an output.
The module manages one or more Google Cloud VMWare Engine Private Clouds.
It can either create a new VMWare engine network shared between the private clouds or it can use an existing one. The module also creates peering connections to users' VPCs or other VMware engine networks.
To understand the limits and to properly configure the vSphere/vSAN subnets CIDR range please refer to the [GCVE public documentation](https://cloud.google.com/vmware-engine/docs/quickstart-networking-requirements).
Be aware that the deployment of this module might require up to 2 hours depending on the selected private cloud target zone.
The deployment might require up to 2 hours, depending on the selected private cloud target zone.
<!-- BEGIN TOC -->
- [Limitations](#limitations)
- [Basic Private Cloud Creation](#basic-private-cloud-creation)
- [Private Cloud Creation with custom nodes and cores count](#private-cloud-creation-with-custom-nodes-and-cores-count)
- [Customize management cluster configs](#customize-management-cluster-configs)
- [Create additional clusters](#create-additional-clusters)
- [Variables](#variables)
- [Outputs](#outputs)
<!-- END TOC -->
## Limitations
At the moment this module doesn't support the following use cases:
- Single node private cloud
- Stretched private cloud
The module (and the underlying resource) still don't support the creation of stretched (regional) private clouds.
## Basic Private Cloud Creation
```hcl
module "gcve-pc" {
source = "./fabric/modules/gcve-private-cloud"
name = "gcve-pc"
prefix = "gcve-pc"
project_id = "gcve-test-project"
zone = "europe-west8-a"
cidr = "192.168.0.0/24"
private_connections = {
vmw_network_peerings = {
transit-conn1 = {
name = "transit-conn1"
network_self_link = "projects/test-prj-gcve-01/global/networks/default"
tenant_host_project = "g39a814990532d10ap-tp"
type = "PRIVATE_SERVICE_ACCESS"
routing_mode = "REGIONAL"
peer_network = "projects/test-prj-gcve-01/global/networks/default"
}
}
vmw_private_cloud_configs = {
pcc_one = {
cidr = "192.168.0.0/24"
zone = "europe-west8-a"
}
}
}
# tftest modules=1 resources=2 inventory=basic.yaml
# tftest modules=1 resources=3 inventory=basic.yaml
```
## Private Cloud Creation with custom nodes and cores count
## Customize management cluster configs
You can customize the management cluster of each VMware engine private cloud.
```hcl
module "gcve-pc" {
source = "./fabric/modules/gcve-private-cloud"
name = "gcve-pc"
prefix = "gcve-pc"
project_id = "gcve-test-project"
zone = "europe-west8-a"
cidr = "192.168.0.0/24"
management_cluster_config = {
node_type_id = "standard-72"
node_count = 6
custom_core_count = 28
vmw_network_peerings = {
transit-conn1 = {
peer_network = "projects/test-prj-gcve-01/global/networks/default"
}
}
private_connections = {
transit-conn1 = {
name = "transit-conn1"
network_self_link = "projects/test-prj-gcve-01/global/networks/default"
tenant_host_project = "g39a814990532d10ap-tp"
type = "PRIVATE_SERVICE_ACCESS"
routing_mode = "REGIONAL"
vmw_private_cloud_configs = {
pcc_one = {
cidr = "192.168.0.0/24"
management_cluster_config = {
node_type_id = "standard-72"
node_count = 6
custom_core_count = 28
}
zone = "europe-west8-a"
}
}
}
# tftest modules=1 resources=2 inventory=custom.yaml
# tftest modules=1 resources=3 inventory=custom-management.yaml
```
## Create additional clusters
You can optionally create additional clusters in each VMware engine private cloud.
```hcl
module "gcve-pc" {
source = "./fabric/modules/gcve-private-cloud"
prefix = "gcve-pc"
project_id = "gcve-test-project"
vmw_network_peerings = {
transit-conn1 = {
peer_network = "projects/test-prj-gcve-01/global/networks/default"
}
}
vmw_private_cloud_configs = {
pcc_one = {
cidr = "192.168.0.0/24"
additional_cluster_configs = {
test-cluster-one = {
node_type_id = "standard-72"
node_count = 6
custom_core_count = 28
}
test-cluster-two = {
node_type_id = "standard-72"
node_count = 4
custom_core_count = 28
}
}
zone = "europe-west8-a"
}
}
}
# tftest modules=1 resources=5 inventory=additional-clusters.yaml
```
<!-- BEGIN TFDOC -->
## Variables
| name | description | type | required | default |
|---|---|:---:|:---:|:---:|
| [cidr](variables.tf#L16) | vSphere/vSAN subnets CIDR range. To undersatnd the limits, please refer to [GCVE network requirements](https://cloud.google.com/vmware-engine/docs/quickstart-networking-requirements). | <code>string</code> | ✓ | |
| [name](variables.tf#L42) | Private cloud name. | <code>string</code> | ✓ | |
| [project_id](variables.tf#L84) | Project id. | <code>string</code> | | |
| [zone](variables.tf#L101) | Private cloud zone. | <code>string</code> | | |
| [description](variables.tf#L21) | Private cloud description. | <code>string</code> | | <code>&#34;Terraform-managed.&#34;</code> |
| [management_cluster_config](variables.tf#L27) | Management cluster configuration. | <code title="object&#40;&#123;&#10; node_type_id &#61; string&#10; node_count &#61; number,&#10; custom_core_count &#61; number&#10;&#125;&#41;">object&#40;&#123;&#8230;&#125;&#41;</code> | | <code title="&#123;&#10; node_type_id &#61; &#34;standard-72&#34;,&#10; node_count &#61; 3,&#10; custom_core_count &#61; null&#10;&#125;">&#123;&#8230;&#125;</code> |
| [private_connections](variables.tf#L47) | VMWare private connections configuration. It is used to create the gcloud command printed as output. | <code title="map&#40;object&#40;&#123;&#10; name &#61; string&#10; network_self_link &#61; string&#10; peering_name &#61; optional&#40;string&#41;&#10; tenant_host_project &#61; optional&#40;string&#41;&#10; description &#61; optional&#40;string, &#34;Terraform-managed.&#34;&#41;&#10; type &#61; optional&#40;string, &#34;PRIVATE_SERVICE_ACCESS&#34;&#41;&#10; routing_mode &#61; optional&#40;string, &#34;REGIONAL&#34;&#41;&#10;&#125;&#41;&#41;">map&#40;object&#40;&#123;&#8230;&#125;&#41;&#41;</code> | | <code>&#123;&#125;</code> |
| [vmw_network_create](variables.tf#L89) | Create the VMware Engine network. When set to false, it uses a data source to reference an existing VMware Engine network. | <code>bool</code> | | <code>true</code> |
| [vmw_network_description](variables.tf#L95) | VMware Engine network description. | <code>string</code> | | <code>&#34;Terraform-managed.&#34;</code> |
| [prefix](variables.tf#L17) | Resources name prefix. | <code>string</code> | ✓ | |
| [project_id](variables.tf#L22) | Project id. | <code>string</code> | ✓ | |
| [vmw_network_config](variables.tf#L27) | VMware Engine network configuration. | <code title="object&#40;&#123;&#10; create &#61; optional&#40;bool, true&#41;&#10; description &#61; optional&#40;string, &#34;Terraform-managed.&#34;&#41;&#10; name &#61; optional&#40;string, &#34;default&#34;&#41;&#10;&#125;&#41;">object&#40;&#123;&#8230;&#125;&#41;</code> | | <code>&#123;&#125;</code> |
| [vmw_network_peerings](variables.tf#L37) | The network peerings towards users' VPCs or other VMware Engine networks. The key is the peering name suffix. | <code title="map&#40;object&#40;&#123;&#10; peer_network &#61; string&#10; description &#61; optional&#40;string, &#34;Managed by Terraform.&#34;&#41;&#10; export_custom_routes &#61; optional&#40;bool, false&#41;&#10; export_custom_routes_with_public_ip &#61; optional&#40;bool, false&#41;&#10; import_custom_routes &#61; optional&#40;bool, false&#41;&#10; import_custom_routes_with_public_ip &#61; optional&#40;bool, false&#41;&#10; peer_to_vmware_engine_network &#61; optional&#40;bool, false&#41;&#10;&#125;&#41;&#41;">map&#40;object&#40;&#123;&#8230;&#125;&#41;&#41;</code> | | <code>&#123;&#125;</code> |
| [vmw_private_cloud_configs](variables.tf#L51) | The VMware private cloud configurations. The key is the unique private cloud name suffix. | <code title="map&#40;object&#40;&#123;&#10; cidr &#61; string&#10; zone &#61; string&#10; additional_cluster_configs &#61; optional&#40;map&#40;object&#40;&#123;&#10; custom_core_count &#61; optional&#40;number&#41;&#10; node_count &#61; optional&#40;number, 3&#41;&#10; node_type_id &#61; optional&#40;string, &#34;standard-72&#34;&#41;&#10; &#125;&#41;&#41;, &#123;&#125;&#41;&#10; management_cluster_config &#61; optional&#40;object&#40;&#123;&#10; custom_core_count &#61; optional&#40;number&#41;&#10; name &#61; optional&#40;string, &#34;mgmt-cluster&#34;&#41;&#10; node_count &#61; optional&#40;number, 3&#41;&#10; node_type_id &#61; optional&#40;string, &#34;standard-72&#34;&#41;&#10; &#125;&#41;, &#123;&#125;&#41;&#10; description &#61; optional&#40;string, &#34;Managed by Terraform.&#34;&#41;&#10;&#125;&#41;&#41;">map&#40;object&#40;&#123;&#8230;&#125;&#41;&#41;</code> | | <code title="&#123;&#10; pcc_one &#61; &#123;&#10; cidr &#61; &#34;192.168.0.0&#47;24&#34;&#10; additional_cluster_configs &#61; &#123;&#10; test-cluster-one &#61; &#123;&#10; node_type_id &#61; &#34;standard-72&#34;&#10; node_count &#61; 6&#10; custom_core_count &#61; 28&#10; &#125;&#10; test-cluster-two &#61; &#123;&#10; node_type_id &#61; &#34;standard-72&#34;&#10; node_count &#61; 4&#10; custom_core_count &#61; 28&#10; &#125;&#10; &#125;&#10; zone &#61; &#34;europe-west8-a&#34;&#10; &#125;&#10;&#125;">&#123;&#8230;&#125;</code> |
## Outputs
| name | description | sensitive |
|---|---|:---:|
| [hcx](outputs.tf#L17) | Details about a HCX Cloud Manager appliance. | |
| [id](outputs.tf#L22) | ID of the private cloud. | |
| [management_cluster](outputs.tf#L27) | Details of the management cluster of the private cloud. | |
| [network_config](outputs.tf#L32) | Details about the network configuration of the private cloud. | |
| [nsx](outputs.tf#L37) | Details about a NSX Manager appliance. | |
| [private-cloud](outputs.tf#L42) | The private cloud resource. | |
| [private_connections_setup](outputs.tf#L47) | Cloud SDK commands for the private connections manual setup. | |
| [state](outputs.tf#L63) | Details about the state of the private cloud. | |
| [vcenter](outputs.tf#L68) | Details about a vCenter Server management appliance. | |
| [vmw_engine_network_config](outputs.tf#L17) | VMware engine network configuration. | |
| [vmw_engine_network_peerings](outputs.tf#L22) | The peerings created towards the user VPC or other VMware engine networks. | |
| [vmw_engine_private_clouds](outputs.tf#L27) | VMware engine private cloud resources. | |
<!-- END TFDOC -->

View File

@@ -15,61 +15,87 @@
*/
locals {
region = regex("([a-z]*-[a-z]*[0-9]{1,2})-([a-z])", var.zone)[0]
# Creates a map of additional clusters objects, including their parent private cloud
additional_cluster_configs = merge(
[for pcc_name, pcc in var.vmw_private_cloud_configs
: { for cluster_name, cluster in pcc.additional_cluster_configs
: "${cluster_name}" => merge(
cluster,
{ parent = try(google_vmwareengine_private_cloud.vmw_engine_private_clouds[pcc_name].id, null) }
)
}
]...)
vmw_network = (
var.vmw_network_create
? try(google_vmwareengine_network.private-cloud-network.0, null)
: try(data.google_vmwareengine_network.private-cloud-network.0, null)
var.vmw_network_config.create
? try(google_vmwareengine_network.private_cloud_network.0, null)
: try(data.google_vmwareengine_network.private_cloud_network.0, null)
)
tenant_host_project = {
for k, v in var.private_connections : k => v.tenant_host_project == null
? regex("(.*)/projects/([a-z0-9-]*)/(.*)", "${data.google_compute_network_peering.psa_peering[k].peer_network}")[1]
: v.tenant_host_project
}
}
data "google_vmwareengine_network" "private-cloud-network" {
count = var.vmw_network_create ? 0 : 1
provider = google-beta
project = var.project_id
name = "${local.region}-default"
location = local.region
}
data "google_compute_network_peering" "psa_peering" {
for_each = { for k, v in var.private_connections : k => v if v.tenant_host_project == null }
name = each.value.peering_name
network = each.value.network_self_link
}
resource "google_vmwareengine_private_cloud" "private-cloud" {
resource "google_vmwareengine_network" "private_cloud_network" {
provider = google-beta
count = var.vmw_network_config.create ? 1 : 0
project = var.project_id
location = var.zone
name = var.name
description = var.description
name = "${var.prefix}-${var.vmw_network_config.name}"
description = var.vmw_network_config.description
location = "global"
type = "STANDARD"
}
data "google_vmwareengine_network" "private_cloud_network" {
provider = google-beta
count = var.vmw_network_config.create ? 0 : 1
project = var.project_id
name = "${var.prefix}-${var.vmw_network_config.name}"
location = "global"
}
resource "google_vmwareengine_network_peering" "vmw_engine_network_peerings" {
provider = google-beta
for_each = var.vmw_network_peerings
project = var.project_id
name = "${var.prefix}-${each.key}"
description = each.value.description
export_custom_routes = each.value.export_custom_routes
export_custom_routes_with_public_ip = each.value.export_custom_routes_with_public_ip
import_custom_routes = each.value.import_custom_routes
import_custom_routes_with_public_ip = each.value.import_custom_routes_with_public_ip
peer_network = each.value.peer_network
peer_network_type = each.value.peer_to_vmware_engine_network ? "VMWARE_ENGINE_NETWORK" : "STANDARD"
vmware_engine_network = local.vmw_network.id
}
resource "google_vmwareengine_private_cloud" "vmw_engine_private_clouds" {
provider = google-beta
for_each = var.vmw_private_cloud_configs
project = var.project_id
location = each.value.zone
name = "${var.prefix}-${each.key}"
description = each.value.description
network_config {
management_cidr = var.cidr
management_cidr = each.value.cidr
vmware_engine_network = local.vmw_network.id
}
management_cluster {
cluster_id = "${var.name}-mgmt-cluster"
cluster_id = "${var.prefix}-${each.key}-${each.value.management_cluster_config.name}"
node_type_configs {
node_type_id = var.management_cluster_config.node_type_id
node_count = var.management_cluster_config.node_count
custom_core_count = var.management_cluster_config.custom_core_count
node_type_id = each.value.management_cluster_config.node_type_id
node_count = each.value.management_cluster_config.node_count
custom_core_count = each.value.management_cluster_config.custom_core_count
}
}
}
resource "google_vmwareengine_network" "private-cloud-network" {
count = var.vmw_network_create ? 1 : 0
provider = google-beta
project = var.project_id
name = "${local.region}-default"
location = local.region
type = "LEGACY"
description = var.vmw_network_description
resource "google_vmwareengine_cluster" "vmw_engine_additional_clusters" {
provider = google-beta
for_each = local.additional_cluster_configs
name = "${var.prefix}-${each.key}"
parent = each.value.parent
node_type_configs {
custom_core_count = each.value.custom_core_count
node_count = each.value.node_count
node_type_id = each.value.node_type_id
}
}

View File

@@ -14,58 +14,17 @@
* limitations under the License.
*/
output "hcx" {
description = "Details about a HCX Cloud Manager appliance."
value = google_vmwareengine_private_cloud.private-cloud.hcx
output "vmw_engine_network_config" {
description = "VMware engine network configuration."
value = local.vmw_network
}
output "id" {
description = "ID of the private cloud."
value = google_vmwareengine_private_cloud.private-cloud.id
output "vmw_engine_network_peerings" {
description = "The peerings created towards the user VPC or other VMware engine networks."
value = google_vmwareengine_network_peering.vmw_engine_network_peerings
}
output "management_cluster" {
description = "Details of the management cluster of the private cloud."
value = google_vmwareengine_private_cloud.private-cloud.management_cluster
}
output "network_config" {
description = "Details about the network configuration of the private cloud."
value = google_vmwareengine_private_cloud.private-cloud.network_config
}
output "nsx" {
description = "Details about a NSX Manager appliance."
value = google_vmwareengine_private_cloud.private-cloud.nsx
}
output "private-cloud" {
description = "The private cloud resource."
value = google_vmwareengine_private_cloud.private-cloud
}
output "private_connections_setup" {
description = "Cloud SDK commands for the private connections manual setup."
value = {
for k, v in var.private_connections : k => <<EOT
gcloud vmware private-connections create ${v.name} \
--location=${local.region} \
--project=${var.project_id} \
--vmware-engine-network=${local.region}-default \
--description="${v.description}" \
--routing-mode=${v.routing_mode} \
--service-project=${local.tenant_host_project[k]} \
--type=${v.type}
EOT
}
}
output "state" {
description = "Details about the state of the private cloud."
value = google_vmwareengine_private_cloud.private-cloud.state
}
output "vcenter" {
description = "Details about a vCenter Server management appliance."
value = google_vmwareengine_private_cloud.private-cloud.vcenter
output "vmw_engine_private_clouds" {
description = "VMware engine private cloud resources."
value = google_vmwareengine_private_cloud.vmw_engine_private_clouds
}

View File

@@ -13,96 +13,76 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
variable "cidr" {
description = "vSphere/vSAN subnets CIDR range. To undersatnd the limits, please refer to [GCVE network requirements](https://cloud.google.com/vmware-engine/docs/quickstart-networking-requirements)."
variable "prefix" {
description = "Resources name prefix."
type = string
}
variable "description" {
description = "Private cloud description."
type = string
default = "Terraform-managed."
}
variable "management_cluster_config" {
description = "Management cluster configuration."
type = object({
node_type_id = string
node_count = number,
custom_core_count = number
})
default = {
node_type_id = "standard-72",
node_count = 3,
custom_core_count = null
}
nullable = false
}
variable "name" {
description = "Private cloud name."
type = string
}
variable "private_connections" {
description = "VMWare private connections configuration. It is used to create the gcloud command printed as output."
type = map(object({
name = string
network_self_link = string
peering_name = optional(string)
tenant_host_project = optional(string)
description = optional(string, "Terraform-managed.")
type = optional(string, "PRIVATE_SERVICE_ACCESS")
routing_mode = optional(string, "REGIONAL")
}))
default = {}
nullable = false
validation {
condition = alltrue([
for k, v in var.private_connections :
(v.peering_name != null) != (v.tenant_host_project != null)
]
)
error_message = "Both peering_name and tenant_host_project variables have been set. Only one variable is allowed."
}
validation {
condition = alltrue([
for r in var.private_connections :
contains(["GLOBAL", "REGIONAL"], r.routing_mode)
])
error_message = "Routing mode must be one of GLOBAL, REGIONAL."
}
validation {
condition = alltrue([
for r in var.private_connections :
contains(["DELL_POWERSCALE", "NETAPP_CLOUD_VOLUMES", "PRIVATE_SERVICE_ACCESS", "THIRD_PARTY_SERVICE"], r.type)
])
error_message = "Type must be one of DELL_POWERSCALE, NETAPP_CLOUD_VOLUMES, PRIVATE_SERVICE_ACCESS, THIRD_PARTY_SERVICE."
}
}
variable "project_id" {
description = "Project id."
type = string
}
variable "vmw_network_create" {
description = "Create the VMware Engine network. When set to false, it uses a data source to reference an existing VMware Engine network."
type = bool
default = true
variable "vmw_network_config" {
description = "VMware Engine network configuration."
type = object({
create = optional(bool, true)
description = optional(string, "Terraform-managed.")
name = optional(string, "default")
})
default = {}
}
variable "vmw_network_description" {
description = " VMware Engine network description."
type = string
default = "Terraform-managed."
variable "vmw_network_peerings" {
description = "The network peerings towards users' VPCs or other VMware Engine networks. The key is the peering name suffix."
type = map(object({
peer_network = string
description = optional(string, "Managed by Terraform.")
export_custom_routes = optional(bool, false)
export_custom_routes_with_public_ip = optional(bool, false)
import_custom_routes = optional(bool, false)
import_custom_routes_with_public_ip = optional(bool, false)
peer_to_vmware_engine_network = optional(bool, false)
}))
default = {}
}
variable "zone" {
description = "Private cloud zone."
type = string
variable "vmw_private_cloud_configs" {
description = "The VMware private cloud configurations. The key is the unique private cloud name suffix."
type = map(object({
cidr = string
zone = string
# The key is the unique additional cluster name suffix
additional_cluster_configs = optional(map(object({
custom_core_count = optional(number)
node_count = optional(number, 3)
node_type_id = optional(string, "standard-72")
})), {})
management_cluster_config = optional(object({
custom_core_count = optional(number)
name = optional(string, "mgmt-cluster")
node_count = optional(number, 3)
node_type_id = optional(string, "standard-72")
}), {})
description = optional(string, "Managed by Terraform.")
}))
default = {
pcc_one = {
cidr = "192.168.0.0/24"
additional_cluster_configs = {
test-cluster-one = {
node_type_id = "standard-72"
node_count = 6
custom_core_count = 28
}
test-cluster-two = {
node_type_id = "standard-72"
node_count = 4
custom_core_count = 28
}
}
zone = "europe-west8-a"
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}

View File

@@ -17,13 +17,11 @@ terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
google-beta = {
source = "hashicorp/google-beta"
version = ">= 5.6.0, < 6.0.0" # tftest
version = ">= 5.10.0, < 6.0.0" # tftest
}
}
}