Simplify new CF from onprem via PSC example (#280)

* add support for PSC addresses to net-address module

* simplify PSC CF example

* update diagram
This commit is contained in:
Ludovico Magnocavallo
2021-07-20 15:05:48 +02:00
committed by GitHub
parent 6a7e907b65
commit 813ea55d0d
11 changed files with 161 additions and 203 deletions

View File

@@ -47,6 +47,26 @@ module "addresses" {
# tftest:modules=1:resources=2
```
### PSC addresses
```hcl
module "addresses" {
source = "./modules/net-address"
project_id = var.project_id
psc_addresses = {
one = {
address = null
network = var.vpc.self_link
}
two = {
address = "10.0.0.32"
network = var.vpc.self_link
}
}
}
# tftest:modules=1:resources=2
```
<!-- BEGIN TFDOC -->
## Variables
@@ -57,6 +77,7 @@ module "addresses" {
| *global_addresses* | List of global addresses to create. | <code title="list&#40;string&#41;">list(string)</code> | | <code title="">[]</code> |
| *internal_addresses* | Map of internal addresses to create, keyed by name. | <code title="map&#40;object&#40;&#123;&#10;region &#61; string&#10;subnetwork &#61; string&#10;&#125;&#41;&#41;">map(object({...}))</code> | | <code title="">{}</code> |
| *internal_addresses_config* | Optional configuration for internal addresses, keyed by name. Unused options can be set to null. | <code title="map&#40;object&#40;&#123;&#10;address &#61; string&#10;purpose &#61; string&#10;tier &#61; string&#10;&#125;&#41;&#41;">map(object({...}))</code> | | <code title="">{}</code> |
| *psc_addresses* | Map of internal addresses used for Private Service Connect. | <code title="map&#40;object&#40;&#123;&#10;address &#61; string&#10;network &#61; string&#10;&#125;&#41;&#41;">map(object({...}))</code> | | <code title="">{}</code> |
## Outputs
@@ -65,4 +86,5 @@ module "addresses" {
| external_addresses | None | |
| global_addresses | None | |
| internal_addresses | None | |
| psc_addresses | None | |
<!-- END TFDOC -->

View File

@@ -44,3 +44,15 @@ resource "google_compute_address" "internal" {
purpose = try(var.internal_addresses_config[each.key].purpose, null)
# labels = lookup(var.internal_address_labels, each.key, {})
}
resource "google_compute_global_address" "psc" {
for_each = var.psc_addresses
project = var.project_id
name = each.key
description = "Terraform managed."
address_type = "INTERNAL"
network = each.value.network
address = try(each.value.address, null)
purpose = "PRIVATE_SERVICE_CONNECT"
# labels = lookup(var.internal_address_labels, each.key, {})
}

View File

@@ -20,7 +20,6 @@ output "external_addresses" {
address.name => {
address = address.address
self_link = address.self_link
users = address.users
}
}
}
@@ -41,7 +40,16 @@ output "internal_addresses" {
address.name => {
address = address.address
self_link = address.self_link
users = address.users
}
}
}
output "psc_addresses" {
value = {
for address in google_compute_global_address.psc :
address.name => {
address = address.address
self_link = address.self_link
}
}
}

View File

@@ -61,3 +61,12 @@ variable "project_id" {
description = "Project where the addresses will be created."
type = string
}
variable "psc_addresses" {
description = "Map of internal addresses used for Private Service Connect."
type = map(object({
address = string
network = string
}))
default = {}
}