F5 blueprint (#1787)
--------- Co-authored-by: Luca Prete <lucaprete@google.com>
This commit is contained in:
parent
2997bdeee5
commit
642f65b841
|
@ -20,4 +20,10 @@ The blueprints in this folder show how to automate installation of specific thir
|
|||
|
||||
<a href="./phpipam/" title="phpIPAM bootstrap example"><img src="./phpipam/images/phpipam.png" align="left" width="320px"></a> <p style="margin-left: 340px">This [example](./phpipam/) shows how to quickly bootstrap a serverless phpIPAM instance on GCP using Cloud Run. This comes with typical enterprise features like Shared VPC, Cloud Armor with IAP and, possibly, private exposure via Internal Application Load Balancer. Indeed, the script supports deploying the application either publicly via Global Application Load Balancer with restricted access based on IPs (Cloud Armor) and identities (Identity Aware Proxy) or privately via Internal Application Load Balancer.</p>
|
||||
|
||||
<br clear="left">
|
||||
|
||||
### F5 BigIP
|
||||
|
||||
<a href="./f5-bigip/" title="F5 BigIP"><img src="./phpipam/diagram.png" align="left" width="320px"></a> <p style="margin-left: 340px">These examples show how to deploy both private and public active/active F5 BigIP-VE load balancers in GCP.</p>
|
||||
|
||||
<br clear="left">
|
|
@ -0,0 +1,11 @@
|
|||
# Third Party Solutions
|
||||
|
||||
The blueprints in this folder show how to deploy both private and public active/active F5 BigIP-VE load balancers in GCP.
|
||||
|
||||
## Blueprints
|
||||
|
||||
### F5 BigIP
|
||||
|
||||
<a href="./f5-bigip-ha-active/" title="F5 BigIP HA active-active"><img src="./f5-bigip-ha-active/diagram.png" align="left" width="320px"></a> <p style="margin-left: 340px">This example shows how to deploy both private and public active/active F5 BigIP-VE load balancers in GCP. It deploys external and/or internal GCP network passthrough load balancers in front of the F5 VMs in order to load balance the ingress traffic between them and it supports both IPv4 and IPv6.</p>
|
||||
|
||||
<br clear="left">
|
|
@ -0,0 +1,325 @@
|
|||
# F5 BigIP-VE HA active-active blueprint
|
||||
|
||||
This blueprint allows to create external active/active private and/or public F5 BigIP-VE load balancers.
|
||||
|
||||
## Design notes
|
||||
|
||||
- The blueprint supports by default two VPCs: a `dataplane` network and a `management` network.
|
||||
- We don't use the `F5 Cloud Failover Extension (CFE)`. This would imply an active/passive architecture, it would limit the number of instances to two, it would use static routes and it would require F5 VMs service accounts to have roles set, so they can configure routes.
|
||||
- We deploy instead as many active instances users need and we make them reachable through passthrough GCP load balancers.
|
||||
- The blueprint allows to expose the F5 instances both externally and internally, using internal and external passthrough load balancers. You can also choose to expose the same F5 instances both externally and internally at the same time.
|
||||
- The blueprint supports dual-stack (IPv4/IPv6).
|
||||
- We deliberately use the original F5-BigIP `startup-script.tpl` file. We haven't changed it and we pass to it the same variables, so it should be easier to swap it with custom scripts.
|
||||
|
||||
## Examples
|
||||
|
||||
<!-- BEGIN TOC -->
|
||||
- [Design notes](#design-notes)
|
||||
- [Examples](#examples)
|
||||
- [Single instance](#single-instance)
|
||||
- [Active/active instances](#activeactive-instances)
|
||||
- [Change the shared instances configuration](#change-the-shared-instances-configuration)
|
||||
- [Public load F5 load balancers](#public-load-f5-load-balancers)
|
||||
- [Multiple forwarding rules and dual-stack (IPv4/IPv6)](#multiple-forwarding-rules-and-dual-stack-ipv4ipv6)
|
||||
- [Use the GCP secret manager](#use-the-gcp-secret-manager)
|
||||
- [Variables](#variables)
|
||||
- [Outputs](#outputs)
|
||||
<!-- END TOC -->
|
||||
|
||||
### Single instance
|
||||
|
||||
By default, the blueprint deploys one or more instances in a region. These instances are behind an internal network passthrough (L3_DEFAULT) load balancer.
|
||||
|
||||
```hcl
|
||||
module "f5-lb" {
|
||||
source = "./fabric/blueprints/third-party-solutions/f5-bigip/f5-bigip-ha-active"
|
||||
project_id = "my-project"
|
||||
prefix = "test"
|
||||
region = "europe-west1"
|
||||
|
||||
instance_dedicated_configs = {
|
||||
a = {
|
||||
license_key = "AAAAA-BBBBB-CCCCC-DDDDD-EEEEEEE"
|
||||
network_config = {
|
||||
alias_ip_range_address = "192.168.1.0/24"
|
||||
alias_ip_range_name = "ip-range-a"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vpc_config = {
|
||||
dataplane = {
|
||||
network = "projects/my-project/global/networks/dataplane"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/dataplane"
|
||||
}
|
||||
management = {
|
||||
network = "projects/my-project/global/networks/management"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/management"
|
||||
}
|
||||
}
|
||||
}
|
||||
# tftest modules=6 resources=8 inventory=single-instance.yaml
|
||||
```
|
||||
|
||||
### Active/active instances
|
||||
|
||||
To add more than one instance, add items to the `instance_dedicated_configs` variable. Keys specify the the zones where the instances are deployed.
|
||||
|
||||
```hcl
|
||||
module "f5-lb" {
|
||||
source = "./fabric/blueprints/third-party-solutions/f5-bigip/f5-bigip-ha-active"
|
||||
project_id = "my-project"
|
||||
prefix = "test"
|
||||
region = "europe-west1"
|
||||
|
||||
instance_dedicated_configs = {
|
||||
a = {
|
||||
license_key = "AAAAA-BBBBB-CCCCC-DDDDD-EEEEEEE"
|
||||
network_config = {
|
||||
alias_ip_range_address = "192.168.1.0/24"
|
||||
alias_ip_range_name = "ip-range-a"
|
||||
}
|
||||
}
|
||||
b = {
|
||||
license_key = "XXXXX-YYYYY-WWWWW-ZZZZZ-PPPPPP"
|
||||
network_config = {
|
||||
alias_ip_range_address = "192.168.2.0/24"
|
||||
alias_ip_range_name = "ip-range-b"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vpc_config = {
|
||||
dataplane = {
|
||||
network = "projects/my-project/global/networks/dataplane"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/dataplane"
|
||||
}
|
||||
management = {
|
||||
network = "projects/my-project/global/networks/management"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/management"
|
||||
}
|
||||
}
|
||||
}
|
||||
# tftest modules=7 resources=12 inventory=active-active-instances.yaml
|
||||
```
|
||||
|
||||
### Change the shared instances configuration
|
||||
|
||||
You can change one or more properties used by the shared instances, leveraging the `instance_shared_config` variable.
|
||||
|
||||
```hcl
|
||||
module "f5-lb" {
|
||||
source = "./fabric/blueprints/third-party-solutions/f5-bigip/f5-bigip-ha-active"
|
||||
project_id = "my-project"
|
||||
prefix = "test"
|
||||
region = "europe-west1"
|
||||
|
||||
instance_dedicated_configs = {
|
||||
a = {
|
||||
license_key = "AAAAA-BBBBB-CCCCC-DDDDD-EEEEEEE"
|
||||
network_config = {
|
||||
alias_ip_range_address = "192.168.1.0/24"
|
||||
alias_ip_range_name = "ip-range-a"
|
||||
}
|
||||
}
|
||||
b = {
|
||||
license_key = "XXXXX-YYYYY-WWWWW-ZZZZZ-PPPPPP"
|
||||
network_config = {
|
||||
alias_ip_range_address = "192.168.2.0/24"
|
||||
alias_ip_range_name = "ip-range-b"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
instance_shared_config = {
|
||||
boot_disk = {
|
||||
size = 150
|
||||
}
|
||||
instance_type = "n2-standard-8"
|
||||
tags = ["f5-lbs"]
|
||||
username = "f5admin"
|
||||
}
|
||||
|
||||
vpc_config = {
|
||||
dataplane = {
|
||||
network = "projects/my-project/global/networks/dataplane"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/dataplane"
|
||||
}
|
||||
management = {
|
||||
network = "projects/my-project/global/networks/management"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/management"
|
||||
}
|
||||
}
|
||||
}
|
||||
# tftest modules=7 resources=12 inventory=shared-config.yaml
|
||||
```
|
||||
|
||||
### Public load F5 load balancers
|
||||
|
||||
You can configure the blueprint so it deploys external network passthrough load balancers, so you can expose on Internet your F5 load balancer(s).
|
||||
|
||||
```hcl
|
||||
module "f5-lb" {
|
||||
source = "./fabric/blueprints/third-party-solutions/f5-bigip/f5-bigip-ha-active"
|
||||
project_id = "my-project"
|
||||
prefix = "test"
|
||||
region = "europe-west1"
|
||||
|
||||
instance_dedicated_configs = {
|
||||
a = {
|
||||
license_key = "AAAAA-BBBBB-CCCCC-DDDDD-EEEEEEE"
|
||||
network_config = {
|
||||
alias_ip_range_address = "192.168.1.0/24"
|
||||
alias_ip_range_name = "ip-range-a"
|
||||
}
|
||||
}
|
||||
b = {
|
||||
license_key = "XXXXX-YYYYY-WWWWW-ZZZZZ-PPPPPP"
|
||||
network_config = {
|
||||
alias_ip_range_address = "192.168.2.0/24"
|
||||
alias_ip_range_name = "ip-range-b"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
forwarding_rules_config = {
|
||||
"ext-ipv4" = {
|
||||
external = true
|
||||
}
|
||||
}
|
||||
|
||||
vpc_config = {
|
||||
dataplane = {
|
||||
network = "projects/my-project/global/networks/dataplane"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/dataplane"
|
||||
}
|
||||
management = {
|
||||
network = "projects/my-project/global/networks/management"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/management"
|
||||
}
|
||||
}
|
||||
}
|
||||
# tftest modules=7 resources=12 inventory=public-load-balancers.yaml
|
||||
```
|
||||
|
||||
### Multiple forwarding rules and dual-stack (IPv4/IPv6)
|
||||
|
||||
You can configure the blueprint in order to expose both internal and external load balancers.
|
||||
Each load balancer can have multiple forwarding rules, eventually both IPv4 and IPv6.
|
||||
|
||||
```hcl
|
||||
module "f5-lb" {
|
||||
source = "./fabric/blueprints/third-party-solutions/f5-bigip/f5-bigip-ha-active"
|
||||
project_id = "my-project"
|
||||
prefix = "test"
|
||||
region = "europe-west1"
|
||||
|
||||
instance_dedicated_configs = {
|
||||
a = {
|
||||
license_key = "AAAAA-BBBBB-CCCCC-DDDDD-EEEEEEE"
|
||||
network_config = {
|
||||
alias_ip_range_address = "192.168.1.0/24"
|
||||
alias_ip_range_name = "ip-range-a"
|
||||
}
|
||||
}
|
||||
b = {
|
||||
license_key = "XXXXX-YYYYY-WWWWW-ZZZZZ-PPPPPP"
|
||||
network_config = {
|
||||
alias_ip_range_address = "192.168.2.0/24"
|
||||
alias_ip_range_name = "ip-range-b"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
forwarding_rules_config = {
|
||||
"ext-ipv4" = {
|
||||
external = true
|
||||
}
|
||||
"ext-ipv6" = {
|
||||
external = true
|
||||
ip_version = "IPV6"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/ipv6_external"
|
||||
}
|
||||
"int-ipv4" = {}
|
||||
"int-ipv6" = {
|
||||
ip_version = "IPV6"
|
||||
}
|
||||
}
|
||||
|
||||
vpc_config = {
|
||||
dataplane = {
|
||||
network = "projects/my-project/global/networks/dataplane"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/dataplane"
|
||||
}
|
||||
management = {
|
||||
network = "projects/my-project/global/networks/management"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/management"
|
||||
}
|
||||
}
|
||||
}
|
||||
# tftest modules=8 resources=20 inventory=multiple-fw-rules.yaml
|
||||
```
|
||||
|
||||
### Use the GCP secret manager
|
||||
|
||||
By default, this blueprint (and the `startup-script.tpl`) stores the F5 admin password in plain-text as a metadata of the F5 VMs. Most of administrators change this password in F5 soon after the boot.
|
||||
The example shows how to leverage instead the GCP secret manager.
|
||||
|
||||
```hcl
|
||||
module "f5-lb" {
|
||||
source = "./fabric/blueprints/third-party-solutions/f5-bigip/f5-bigip-ha-active"
|
||||
project_id = "my-project"
|
||||
prefix = "test"
|
||||
region = "europe-west1"
|
||||
|
||||
instance_shared_config = {
|
||||
secret = {
|
||||
is_gcp = true
|
||||
value = "f5_secret_name" # needs to be defined in the same project
|
||||
}
|
||||
}
|
||||
|
||||
instance_dedicated_configs = {
|
||||
a = {
|
||||
license_key = "AAAAA-BBBBB-CCCCC-DDDDD-EEEEEEE"
|
||||
network_config = {
|
||||
alias_ip_range_address = "192.168.1.0/24"
|
||||
alias_ip_range_name = "ip-range-a"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vpc_config = {
|
||||
dataplane = {
|
||||
network = "projects/my-project/global/networks/dataplane"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/dataplane"
|
||||
}
|
||||
management = {
|
||||
network = "projects/my-project/global/networks/management"
|
||||
subnetwork = "projects/my-project/regions/europe-west1/subnetworks/management"
|
||||
}
|
||||
}
|
||||
}
|
||||
# tftest modules=6 resources=8 inventory=secret-manager.yaml
|
||||
```
|
||||
<!-- BEGIN TFDOC -->
|
||||
## Variables
|
||||
|
||||
| name | description | type | required | default |
|
||||
|---|---|:---:|:---:|:---:|
|
||||
| [instance_dedicated_configs](variables.tf#L43) | The F5 VMs configuration. The map keys are the zones where the VMs are deployed. | <code title="map(object({ network_config = object({ alias_ip_range_address = string alias_ip_range_name = string dataplane_address = optional(string) management_address = optional(string) }) license_key = optional(string, "AAAAA-BBBBB-CCCCC-DDDDD-EEEEEEE") }))">map(object({…}))</code> | ✓ | |
|
||||
| [prefix](variables.tf#L78) | The name prefix used for resources. | <code>string</code> | ✓ | |
|
||||
| [project_id](variables.tf#L83) | The project id where we deploy the resources. | <code>string</code> | ✓ | |
|
||||
| [region](variables.tf#L88) | The region where we deploy the F5 IPs. | <code>string</code> | ✓ | |
|
||||
| [vpc_config](variables.tf#L93) | The dataplane and mgmt network and subnetwork self links. | <code title="object({ dataplane = object({ network = string subnetwork = string }) management = object({ network = string subnetwork = string }) })">object({…})</code> | ✓ | |
|
||||
| [forwarding_rules_config](variables.tf#L17) | The optional configurations of the GCP load balancers forwarding rules. | <code title="map(object({ address = optional(string) external = optional(bool, false) global_access = optional(bool, true) ip_version = optional(string, "IPV4") protocol = optional(string, "L3_DEFAULT") subnetwork = optional(string) # used for IPv6 NLBs }))">map(object({…}))</code> | | <code title="{ l4 = {} }">{…}</code> |
|
||||
| [health_check_config](variables.tf#L32) | The optional health check configuration. The variable types are enforced by the underlying module. | <code>map(any)</code> | | <code title="{ tcp = { port = 65535 port_specification = "USE_FIXED_PORT" } }">{…}</code> |
|
||||
| [instance_shared_config](variables.tf#L56) | The F5 VMs shared configurations. | <code title="object({ boot_disk = optional(object({ image = optional(string, "projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742") size = optional(number, 100) type = optional(string, "pd-ssd") }), {}) enable_ipv6 = optional(bool, false) # needs to be true to receive traffic from IPv6 forwarding rules instance_type = optional(string, "n2-standard-4") secret = optional(object({ is_gcp = optional(bool, false) value = optional(string, "mysecret") }), {}) service_account = optional(string) ssh_public_key = optional(string, "my_key.pub") tags = optional(list(string), []) username = optional(string, "admin") })">object({…})</code> | | <code>{}</code> |
|
||||
|
||||
## Outputs
|
||||
|
||||
| name | description | sensitive |
|
||||
|---|---|:---:|
|
||||
| [f5_management_ips](outputs.tf#L17) | The F5 management interfaces IP addresses. | |
|
||||
| [forwarding_rules_configs](outputs.tf#L25) | The GCP forwarding rules configurations. | |
|
||||
<!-- END TFDOC -->
|
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 46 KiB |
|
@ -0,0 +1,104 @@
|
|||
/**
|
||||
* 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 {
|
||||
ilb_forwarding_rules_config = {
|
||||
for k, v in var.forwarding_rules_config
|
||||
: k => {
|
||||
address = try(module.lb-addresses.internal_addresses["${var.prefix}-ilb-${k}"].address)
|
||||
global_access = v.global_access
|
||||
ip_version = v.ip_version
|
||||
protocol = v.protocol
|
||||
} if v.external == false
|
||||
}
|
||||
nlb_forwarding_rules_config = {
|
||||
for k, v in var.forwarding_rules_config
|
||||
: k => {
|
||||
address = try(module.lb-addresses.external_addresses["${var.prefix}-nlb-${k}"].address)
|
||||
ip_version = v.ip_version
|
||||
protocol = v.protocol
|
||||
subnetwork = v.subnetwork
|
||||
} if v.external == true
|
||||
}
|
||||
}
|
||||
|
||||
module "lb-addresses" {
|
||||
source = "../../../../modules/net-address"
|
||||
project_id = var.project_id
|
||||
external_addresses = {
|
||||
for k, v in var.forwarding_rules_config
|
||||
: k => {
|
||||
address = v.address
|
||||
ipv6 = v.ip_version == "IPV6" ? { endpoint_type = "NETLB" } : null
|
||||
name = "${var.prefix}-nlb-${k}"
|
||||
region = var.region
|
||||
subnetwork = var.vpc_config["dataplane"]["subnetwork"]
|
||||
} if v.external == true
|
||||
}
|
||||
internal_addresses = {
|
||||
for k, v in var.forwarding_rules_config
|
||||
: k => {
|
||||
address = v.address
|
||||
ipv6 = v.ip_version == "IPV6" ? {} : null
|
||||
name = "${var.prefix}-ilb-${k}"
|
||||
region = var.region
|
||||
subnetwork = var.vpc_config["dataplane"]["subnetwork"]
|
||||
} if v.external == false
|
||||
}
|
||||
}
|
||||
|
||||
module "passthrough-ilb" {
|
||||
count = (
|
||||
length(local.ilb_forwarding_rules_config) > 0
|
||||
? 1
|
||||
: 0
|
||||
)
|
||||
source = "../../../../modules/net-lb-int"
|
||||
project_id = var.project_id
|
||||
region = var.region
|
||||
name = "${var.prefix}-ilb"
|
||||
forwarding_rules_config = local.ilb_forwarding_rules_config
|
||||
health_check_config = var.health_check_config
|
||||
|
||||
backends = [
|
||||
for k, _ in var.instance_dedicated_configs
|
||||
: { group = module.bigip-vms[k].group.self_link }
|
||||
]
|
||||
|
||||
vpc_config = {
|
||||
network = var.vpc_config["dataplane"]["network"]
|
||||
subnetwork = var.vpc_config["dataplane"]["subnetwork"]
|
||||
}
|
||||
}
|
||||
|
||||
module "passthrough-nlb" {
|
||||
count = (
|
||||
length(local.nlb_forwarding_rules_config) > 0
|
||||
? 1
|
||||
: 0
|
||||
)
|
||||
source = "../../../../modules/net-lb-ext"
|
||||
project_id = var.project_id
|
||||
region = var.region
|
||||
name = "${var.prefix}-nlb"
|
||||
forwarding_rules_config = local.nlb_forwarding_rules_config
|
||||
health_check_config = var.health_check_config
|
||||
|
||||
backends = [
|
||||
for k, _ in var.instance_dedicated_configs
|
||||
: { group = module.bigip-vms[k].group.self_link }
|
||||
]
|
||||
}
|
|
@ -0,0 +1,139 @@
|
|||
/**
|
||||
* 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 {
|
||||
_f5_urls = {
|
||||
as3 = "https://github.com/F5Networks/f5-appsvcs-extension/releases/download/v3.46.0/f5-appsvcs-3.46.0-5.noarch.rpm"
|
||||
cfe = "https://github.com/F5Networks/f5-cloud-failover-extension/releases/download/v1.15.0/f5-cloud-failover-1.15.0-0.noarch.rpm"
|
||||
do = "https://github.com/F5Networks/f5-declarative-onboarding/releases/download/v1.39.0/f5-declarative-onboarding-1.39.0-4.noarch.rpm"
|
||||
fast = "https://github.com/F5Networks/f5-appsvcs-templates/releases/download/v1.25.0/f5-appsvcs-templates-1.25.0-1.noarch.rpm"
|
||||
init = "https://cdn.f5.com/product/cloudsolutions/f5-bigip-runtime-init/v1.6.2/dist/f5-bigip-runtime-init-1.6.2-1.gz.run"
|
||||
ts = "https://github.com/F5Networks/f5-telemetry-streaming/releases/download/v1.33.0/f5-telemetry-1.33.0-1.noarch.rpm"
|
||||
}
|
||||
_f5_urls_split = {
|
||||
for k, v in local._f5_urls
|
||||
: k => split("/", v)
|
||||
}
|
||||
_f5_vers = {
|
||||
as3 = split("-", local._f5_urls_split.as3[length(local._f5_urls_split.as3) - 1])[2]
|
||||
cfe = split("-", local._f5_urls_split.cfe[length(local._f5_urls_split.cfe) - 1])[3]
|
||||
do = split("-", local._f5_urls_split.do[length(local._f5_urls_split.do) - 1])[3]
|
||||
fast = format("v%s", split("-", local._f5_urls_split.fast[length(local._f5_urls_split.fast) - 1])[3])
|
||||
ts = format("v%s", split("-", local._f5_urls_split.ts[length(local._f5_urls_split.ts) - 1])[2])
|
||||
}
|
||||
f5_config = merge(
|
||||
{ NIC_COUNT = true },
|
||||
{ for k, v in local._f5_urls : upper("${k}_url") => v },
|
||||
{ for k, v in local._f5_vers : upper("${k}_ver") => v },
|
||||
)
|
||||
}
|
||||
|
||||
module "vm-addresses-dp" {
|
||||
source = "../../../../modules/net-address"
|
||||
project_id = var.project_id
|
||||
internal_addresses = {
|
||||
for k, v in var.instance_dedicated_configs : k => {
|
||||
address = try(v.network_config.dataplane_address, null)
|
||||
name = "${var.prefix}-${k}-dp"
|
||||
region = var.region
|
||||
subnetwork = var.vpc_config.dataplane.subnetwork
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module "vm-addresses-mgmt" {
|
||||
source = "../../../../modules/net-address"
|
||||
project_id = var.project_id
|
||||
internal_addresses = {
|
||||
for k, v in var.instance_dedicated_configs
|
||||
: k => {
|
||||
address = try(v.network_config.management_address, null)
|
||||
name = "${var.prefix}-${k}-mgmt"
|
||||
region = var.region
|
||||
subnetwork = var.vpc_config.management.subnetwork
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module "bigip-vms" {
|
||||
for_each = var.instance_dedicated_configs
|
||||
source = "../../../../modules/compute-vm"
|
||||
project_id = var.project_id
|
||||
zone = "${var.region}-${each.key}"
|
||||
name = "${var.prefix}-lb-${each.key}"
|
||||
instance_type = var.instance_shared_config.instance_type
|
||||
can_ip_forward = true
|
||||
tags = var.instance_shared_config.tags
|
||||
|
||||
boot_disk = {
|
||||
initialize_params = var.instance_shared_config.boot_disk
|
||||
}
|
||||
|
||||
group = {
|
||||
named_ports = {}
|
||||
}
|
||||
|
||||
metadata = {
|
||||
startup-script = replace(templatefile("${path.module}/startup-script.tpl",
|
||||
merge(local.f5_config, {
|
||||
onboard_log = "/var/log/startup-script.log",
|
||||
libs_dir = "/config/cloud/gcp/node_modules",
|
||||
bigip_username = var.instance_shared_config.username,
|
||||
gcp_secret_manager_authentication = var.instance_shared_config.secret.is_gcp,
|
||||
bigip_password = var.instance_shared_config.secret.value,
|
||||
license_key = each.value.license_key,
|
||||
ssh_keypair = try(file(var.instance_shared_config.ssh_public_key), ""),
|
||||
})), "/\r/", "")
|
||||
}
|
||||
|
||||
network_interfaces = [
|
||||
{
|
||||
network = var.vpc_config.dataplane.network
|
||||
subnetwork = var.vpc_config.dataplane.subnetwork
|
||||
stack_type = (
|
||||
var.instance_shared_config.enable_ipv6
|
||||
? "IPV4_IPV6"
|
||||
: "IPV4_ONLY"
|
||||
)
|
||||
addresses = {
|
||||
internal = module.vm-addresses-dp.internal_addresses["${var.prefix}-${each.key}-dp"].address
|
||||
}
|
||||
alias_ips = {
|
||||
"${each.value.network_config.alias_ip_range_name}" = each.value.network_config.alias_ip_range_address
|
||||
}
|
||||
},
|
||||
{
|
||||
network = var.vpc_config.management.network
|
||||
subnetwork = var.vpc_config.management.subnetwork
|
||||
stack_type = (
|
||||
var.instance_shared_config.enable_ipv6
|
||||
? "IPV4_IPV6"
|
||||
: "IPV4_ONLY"
|
||||
)
|
||||
addresses = {
|
||||
internal = module.vm-addresses-mgmt.internal_addresses["${var.prefix}-${each.key}-mgmt"].address
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
service_account = {
|
||||
email = var.instance_shared_config.service_account
|
||||
scopes = [
|
||||
"https://www.googleapis.com/auth/cloud-platform",
|
||||
"https://www.googleapis.com/auth/userinfo.email"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
/**
|
||||
* 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 "f5_management_ips" {
|
||||
description = "The F5 management interfaces IP addresses."
|
||||
value = {
|
||||
for k, v in module.bigip-vms
|
||||
: v.id => v.internal_ips[1]
|
||||
}
|
||||
}
|
||||
|
||||
output "forwarding_rules_configs" {
|
||||
description = "The GCP forwarding rules configurations."
|
||||
value = {
|
||||
external = {
|
||||
for _, v in try(module.passthrough-nlb[0].forwarding_rules, {})
|
||||
: v.name => {
|
||||
address = v.ip_address
|
||||
ip_version = v.ip_version
|
||||
protocol = v.ip_protocol
|
||||
}
|
||||
},
|
||||
internal = {
|
||||
for _, v in try(module.passthrough-ilb[0].forwarding_rules, {})
|
||||
: v.name => {
|
||||
address = v.ip_address
|
||||
global_access = v.allow_global_access
|
||||
ip_version = v.ip_version
|
||||
protocol = v.ip_protocol
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,276 @@
|
|||
# Copyright 2014-2019 F5 Networks Inc.
|
||||
#
|
||||
# This file usees code from the following third-party project:
|
||||
# * [terraform-gcp-bigip-module] - [https://github.com/F5Networks/terraform-gcp-bigip-module]
|
||||
#
|
||||
# The code from this project is licensed under the Apache 2.0 license.
|
||||
|
||||
#!/bin/bash
|
||||
# Setup console and startup-script logging
|
||||
LOG_FILE=/var/log/cloud/startup-script.log
|
||||
mkdir -p /var/log/cloud
|
||||
[[ -f $LOG_FILE ]] || /usr/bin/touch $LOG_FILE
|
||||
npipe=/tmp/$$.tmp
|
||||
trap "rm -f $npipe" EXIT
|
||||
mknod $npipe p
|
||||
tee <$npipe -a $LOG_FILE /dev/ttyS0 &
|
||||
exec 1>&-
|
||||
exec 1>$npipe
|
||||
exec 2>&1
|
||||
|
||||
# Run Immediately Before MCPD starts
|
||||
/usr/bin/setdb provision.extramb 1024
|
||||
/usr/bin/setdb restjavad.useextramb true
|
||||
|
||||
# skip startup script if already complete
|
||||
if [[ -f /config/startup_finished ]]; then
|
||||
echo "Onboarding complete, skip startup script"
|
||||
exit
|
||||
fi
|
||||
|
||||
mkdir -p /config/cloud /var/config/rest/downloads /var/lib/cloud/icontrollx_installs
|
||||
|
||||
# Create runtime configuration on first boot
|
||||
if [[ ! -f /config/nicswap_finished ]]; then
|
||||
cat << 'EOF' > /config/cloud/runtime-init-conf.yaml
|
||||
---
|
||||
controls:
|
||||
extensionInstallDelayInMs: 60000
|
||||
runtime_parameters:
|
||||
- name: USER_NAME
|
||||
type: static
|
||||
value: ${bigip_username}
|
||||
- name: SSH_KEYS
|
||||
type: static
|
||||
value: "${ssh_keypair}"
|
||||
- name: HOST_NAME
|
||||
type: metadata
|
||||
metadataProvider:
|
||||
environment: gcp
|
||||
type: compute
|
||||
field: name
|
||||
EOF
|
||||
|
||||
if ${gcp_secret_manager_authentication}; then
|
||||
cat << 'EOF' >> /config/cloud/runtime-init-conf.yaml
|
||||
- name: ADMIN_PASS
|
||||
type: secret
|
||||
secretProvider:
|
||||
environment: gcp
|
||||
type: SecretsManager
|
||||
version: latest
|
||||
secretId: ${bigip_password}
|
||||
pre_onboard_enabled: []
|
||||
EOF
|
||||
else
|
||||
cat << 'EOF' >> /config/cloud/runtime-init-conf.yaml
|
||||
- name: ADMIN_PASS
|
||||
type: static
|
||||
value: ${bigip_password}
|
||||
pre_onboard_enabled: []
|
||||
EOF
|
||||
fi
|
||||
|
||||
cat /config/cloud/runtime-init-conf.yaml > /config/cloud/runtime-init-conf-backup.yaml
|
||||
|
||||
cat << 'EOF' >> /config/cloud/runtime-init-conf.yaml
|
||||
extension_packages:
|
||||
install_operations:
|
||||
- extensionType: do
|
||||
extensionVersion: ${DO_VER}
|
||||
extensionUrl: ${DO_URL}
|
||||
- extensionType: as3
|
||||
extensionVersion: ${AS3_VER}
|
||||
extensionUrl: ${AS3_URL}
|
||||
- extensionType: ts
|
||||
extensionVersion: ${TS_VER}
|
||||
extensionUrl: ${TS_URL}
|
||||
- extensionType: cf
|
||||
extensionVersion: ${CFE_VER}
|
||||
extensionUrl: ${CFE_URL}
|
||||
- extensionType: fast
|
||||
extensionVersion: ${FAST_VER}
|
||||
extensionUrl: ${FAST_URL}
|
||||
extension_services:
|
||||
service_operations:
|
||||
- extensionType: do
|
||||
type: inline
|
||||
value:
|
||||
schemaVersion: 1.0.0
|
||||
class: Device
|
||||
async: true
|
||||
Common:
|
||||
class: Tenant
|
||||
hostname: '{{{HOST_NAME}}}.com'
|
||||
My_License:
|
||||
class: License
|
||||
licenseType: regKey
|
||||
regKey: ${license_key}
|
||||
myNtp:
|
||||
class: NTP
|
||||
servers:
|
||||
- 169.254.169.254
|
||||
timezone: UTC
|
||||
myDns:
|
||||
class: DNS
|
||||
nameServers:
|
||||
- 169.254.169.254
|
||||
myProvisioning:
|
||||
class: Provision
|
||||
ltm: nominal
|
||||
admin:
|
||||
class: User
|
||||
partitionAccess:
|
||||
all-partitions:
|
||||
role: admin
|
||||
password: '{{{ADMIN_PASS}}}'
|
||||
shell: bash
|
||||
keys:
|
||||
- '{{{SSH_KEYS}}}'
|
||||
userType: regular
|
||||
'{{{USER_NAME}}}':
|
||||
class: User
|
||||
partitionAccess:
|
||||
all-partitions:
|
||||
role: admin
|
||||
password: '{{{ADMIN_PASS}}}'
|
||||
shell: bash
|
||||
keys:
|
||||
- '{{{SSH_KEYS}}}'
|
||||
userType: regular
|
||||
post_onboard_enabled: []
|
||||
EOF
|
||||
|
||||
cat << 'EOF' >> /config/cloud/runtime-init-conf-backup.yaml
|
||||
extension_services:
|
||||
service_operations:
|
||||
- extensionType: do
|
||||
type: inline
|
||||
value:
|
||||
schemaVersion: 1.0.0
|
||||
class: Device
|
||||
async: true
|
||||
Common:
|
||||
class: Tenant
|
||||
hostname: '{{{HOST_NAME}}}.com'
|
||||
myNtp:
|
||||
class: NTP
|
||||
servers:
|
||||
- 169.254.169.254
|
||||
timezone: UTC
|
||||
myDns:
|
||||
class: DNS
|
||||
nameServers:
|
||||
- 169.254.169.254
|
||||
myProvisioning:
|
||||
class: Provision
|
||||
ltm: nominal
|
||||
admin:
|
||||
class: User
|
||||
partitionAccess:
|
||||
all-partitions:
|
||||
role: admin
|
||||
password: '{{{ADMIN_PASS}}}'
|
||||
shell: bash
|
||||
keys:
|
||||
- '{{{SSH_KEYS}}}'
|
||||
userType: regular
|
||||
'{{{USER_NAME}}}':
|
||||
class: User
|
||||
partitionAccess:
|
||||
all-partitions:
|
||||
role: admin
|
||||
password: '{{{ADMIN_PASS}}}'
|
||||
shell: bash
|
||||
keys:
|
||||
- '{{{SSH_KEYS}}}'
|
||||
userType: regular
|
||||
post_onboard_enabled: []
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Create nic_swap script when multi nic on first boot
|
||||
COMPUTE_BASE_URL="http://metadata.google.internal/computeMetadata/v1"
|
||||
|
||||
if [[ ${NIC_COUNT} && ! -f /config/nicswap_finished ]]; then
|
||||
cat << 'EOF' >> /config/cloud/nic_swap.sh
|
||||
#!/bin/bash
|
||||
source /usr/lib/bigstart/bigip-ready-functions
|
||||
wait_bigip_ready
|
||||
echo "before nic swapping"
|
||||
tmsh list sys db provision.1nicautoconfig
|
||||
tmsh list sys db provision.managementeth
|
||||
echo "after nic swapping"
|
||||
bigstart stop tmm
|
||||
tmsh modify sys db provision.managementeth value eth1
|
||||
tmsh modify sys db provision.1nicautoconfig value disable
|
||||
bigstart start tmm
|
||||
wait_bigip_ready
|
||||
echo "---Mgmt interface setting---"
|
||||
tmsh list sys db provision.managementeth
|
||||
tmsh list sys db provision.1nicautoconfig
|
||||
sed -i "s/iface0=eth0/iface0=eth1/g" /etc/ts/common/image.cfg
|
||||
echo "Done changing interface"
|
||||
echo "Set TMM networks"
|
||||
MGMTADDRESS=$(curl -s -f --retry 10 -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/ip)
|
||||
MGMTMASK=$(curl -s -f --retry 10 -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/subnetmask)
|
||||
MGMTGATEWAY=$(curl -s -f --retry 10 -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway)
|
||||
MGMTMTU=$(curl -s -f --retry 10 -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/mtu)
|
||||
MGMTNETWORK=$(/bin/ipcalc -n $MGMTADDRESS $MGMTMASK | cut -d= -f2)
|
||||
echo $MGMTADDRESS
|
||||
echo $MGMTMASK
|
||||
echo $MGMTGATEWAY
|
||||
echo $MGMTMTU
|
||||
echo $MGMTNETWORK
|
||||
tmsh modify sys global-settings gui-setup disabled
|
||||
tmsh modify sys global-settings mgmt-dhcp disabled
|
||||
tmsh delete sys management-route all
|
||||
tmsh delete sys management-ip all
|
||||
tmsh create sys management-ip $${MGMTADDRESS}/32
|
||||
tmsh create sys management-route mgmt_gw network $${MGMTGATEWAY}/32 type interface mtu $${MGMTMTU}
|
||||
tmsh create sys management-route mgmt_net network $${MGMTNETWORK}/$${MGMTMASK} gateway $${MGMTGATEWAY} mtu $${MGMTMTU}
|
||||
tmsh create sys management-route default gateway $${MGMTGATEWAY} mtu $${MGMTMTU}
|
||||
tmsh modify sys global-settings remote-host add { metadata.google.internal { hostname metadata.google.internal addr 169.254.169.254 } }
|
||||
tmsh modify sys management-dhcp sys-mgmt-dhcp-config request-options delete { ntp-servers }
|
||||
echo "Setting DNS resolver to Cloud DNS"
|
||||
tmsh modify sys dns name-servers add { 169.254.169.254 }
|
||||
tmsh save /sys config
|
||||
/usr/bin/touch /config/nicswap_finished
|
||||
reboot
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Create run_runtime_init.sh script on first boot
|
||||
if [[ ! -f /config/nicswap_finished ]]; then
|
||||
cat << 'EOF' >> /config/cloud/run_runtime_init.sh
|
||||
#!/bin/bash
|
||||
source /usr/lib/bigstart/bigip-ready-functions
|
||||
wait_bigip_ready
|
||||
for i in {1..30}; do
|
||||
curl -fv --retry 1 --connect-timeout 5 -L ${INIT_URL} -o "/var/config/rest/downloads/f5-bigip-runtime-init.gz.run" && break || sleep 10
|
||||
done
|
||||
bash /var/config/rest/downloads/f5-bigip-runtime-init.gz.run -- '--cloud gcp' 2>&1
|
||||
/usr/local/bin/f5-bigip-runtime-init --config-file /config/cloud/runtime-init-conf.yaml 2>&1
|
||||
sleep 5
|
||||
/usr/local/bin/f5-bigip-runtime-init --config-file /config/cloud/runtime-init-conf-backup.yaml 2>&1
|
||||
sleep 5
|
||||
/usr/local/bin/f5-bigip-runtime-init --config-file /config/cloud/runtime-init-conf-backup.yaml 2>&1
|
||||
/usr/bin/touch /config/startup_finished
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Run scripts based on number of nics
|
||||
if ${NIC_COUNT}; then
|
||||
if [[ -f /config/nicswap_finished ]]; then
|
||||
echo "Running run_runtime_init.sh"
|
||||
chmod +x /config/cloud/run_runtime_init.sh
|
||||
nohup /config/cloud/run_runtime_init.sh &
|
||||
else
|
||||
chmod +x /config/cloud/nic_swap.sh
|
||||
nohup /config/cloud/nic_swap.sh &
|
||||
fi
|
||||
else
|
||||
echo "Running run_runtime_init.sh"
|
||||
chmod +x /config/cloud/run_runtime_init.sh
|
||||
nohup /config/cloud/run_runtime_init.sh &
|
||||
fi
|
|
@ -0,0 +1,105 @@
|
|||
/**
|
||||
* 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.
|
||||
*/
|
||||
|
||||
variable "forwarding_rules_config" {
|
||||
type = map(object({
|
||||
address = optional(string)
|
||||
external = optional(bool, false)
|
||||
global_access = optional(bool, true)
|
||||
ip_version = optional(string, "IPV4")
|
||||
protocol = optional(string, "L3_DEFAULT")
|
||||
subnetwork = optional(string) # used for IPv6 NLBs
|
||||
}))
|
||||
description = "The optional configurations of the GCP load balancers forwarding rules."
|
||||
default = {
|
||||
l4 = {}
|
||||
}
|
||||
}
|
||||
|
||||
variable "health_check_config" {
|
||||
description = "The optional health check configuration. The variable types are enforced by the underlying module."
|
||||
type = map(any)
|
||||
default = {
|
||||
tcp = {
|
||||
port = 65535
|
||||
port_specification = "USE_FIXED_PORT"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
variable "instance_dedicated_configs" {
|
||||
description = "The F5 VMs configuration. The map keys are the zones where the VMs are deployed."
|
||||
type = map(object({
|
||||
network_config = object({
|
||||
alias_ip_range_address = string
|
||||
alias_ip_range_name = string
|
||||
dataplane_address = optional(string)
|
||||
management_address = optional(string)
|
||||
})
|
||||
license_key = optional(string, "AAAAA-BBBBB-CCCCC-DDDDD-EEEEEEE")
|
||||
}))
|
||||
}
|
||||
|
||||
variable "instance_shared_config" {
|
||||
description = "The F5 VMs shared configurations."
|
||||
type = object({
|
||||
boot_disk = optional(object({
|
||||
image = optional(string, "projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742")
|
||||
size = optional(number, 100)
|
||||
type = optional(string, "pd-ssd")
|
||||
}), {})
|
||||
enable_ipv6 = optional(bool, false) # needs to be true to receive traffic from IPv6 forwarding rules
|
||||
instance_type = optional(string, "n2-standard-4")
|
||||
secret = optional(object({
|
||||
is_gcp = optional(bool, false)
|
||||
value = optional(string, "mysecret")
|
||||
}), {})
|
||||
service_account = optional(string)
|
||||
ssh_public_key = optional(string, "my_key.pub")
|
||||
tags = optional(list(string), [])
|
||||
username = optional(string, "admin")
|
||||
})
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "prefix" {
|
||||
type = string
|
||||
description = "The name prefix used for resources."
|
||||
}
|
||||
|
||||
variable "project_id" {
|
||||
type = string
|
||||
description = "The project id where we deploy the resources."
|
||||
}
|
||||
|
||||
variable "region" {
|
||||
type = string
|
||||
description = "The region where we deploy the F5 IPs."
|
||||
}
|
||||
|
||||
variable "vpc_config" {
|
||||
description = "The dataplane and mgmt network and subnetwork self links."
|
||||
type = object({
|
||||
dataplane = object({
|
||||
network = string
|
||||
subnetwork = string
|
||||
})
|
||||
management = object({
|
||||
network = string
|
||||
subnetwork = string
|
||||
})
|
||||
})
|
||||
}
|
|
@ -0,0 +1,154 @@
|
|||
# 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.
|
||||
|
||||
values:
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance.default[0]:
|
||||
boot_disk:
|
||||
- initialize_params:
|
||||
- image: projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742
|
||||
size: 100
|
||||
type: pd-ssd
|
||||
can_ip_forward: true
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
machine_type: n2-standard-4
|
||||
name: test-lb-a
|
||||
network_interface:
|
||||
- access_config: []
|
||||
alias_ip_range:
|
||||
- ip_cidr_range: 192.168.1.0/24
|
||||
subnetwork_range_name: ip-range-a
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
- access_config: []
|
||||
alias_ip_range: []
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/management
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
||||
project: my-project
|
||||
tags: null
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance_group.unmanaged[0]:
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
name: test-lb-a
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.lb-addresses.google_compute_address.internal["l4"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-ilb-l4
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.bigip-vms["b"].google_compute_instance.default[0]:
|
||||
advanced_machine_features: []
|
||||
allow_stopping_for_update: true
|
||||
attached_disk: []
|
||||
boot_disk:
|
||||
- initialize_params:
|
||||
- image: projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742
|
||||
size: 100
|
||||
type: pd-ssd
|
||||
can_ip_forward: true
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
machine_type: n2-standard-4
|
||||
name: test-lb-b
|
||||
network_interface:
|
||||
- access_config: []
|
||||
alias_ip_range:
|
||||
- ip_cidr_range: 192.168.2.0/24
|
||||
subnetwork_range_name: ip-range-b
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
- access_config: []
|
||||
alias_ip_range: []
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/management
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
||||
project: my-project
|
||||
service_account:
|
||||
- scopes:
|
||||
- https://www.googleapis.com/auth/cloud-platform
|
||||
- https://www.googleapis.com/auth/userinfo.email
|
||||
tags: null
|
||||
zone: europe-west1-b
|
||||
module.f5-lb.module.bigip-vms["b"].google_compute_instance_group.unmanaged[0]:
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
name: test-lb-b
|
||||
named_port: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
zone: europe-west1-b
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_forwarding_rule.forwarding_rules["l4"]:
|
||||
all_ports: true
|
||||
allow_global_access: true
|
||||
allow_psc_global_access: null
|
||||
ip_protocol: L3_DEFAULT
|
||||
ip_version: IPV4
|
||||
load_balancing_scheme: INTERNAL
|
||||
name: test-ilb-l4
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
ports: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_health_check.default[0]:
|
||||
check_interval_sec: 5
|
||||
description: Terraform managed.
|
||||
healthy_threshold: 2
|
||||
name: test-ilb
|
||||
project: my-project
|
||||
tcp_health_check:
|
||||
- port: 65535
|
||||
port_name: null
|
||||
port_specification: USE_FIXED_PORT
|
||||
proxy_header: NONE
|
||||
timeout_sec: 5
|
||||
unhealthy_threshold: 2
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_region_backend_service.default:
|
||||
description: Terraform managed.
|
||||
load_balancing_scheme: INTERNAL
|
||||
name: test-ilb
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
protocol: UNSPECIFIED
|
||||
region: europe-west1
|
||||
module.f5-lb.module.vm-addresses-dp.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-dp
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.vm-addresses-mgmt.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-mgmt
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
|
@ -0,0 +1,241 @@
|
|||
# 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.
|
||||
|
||||
values:
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance.default[0]:
|
||||
boot_disk:
|
||||
- initialize_params:
|
||||
- image: projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742
|
||||
size: 100
|
||||
type: pd-ssd
|
||||
can_ip_forward: true
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
machine_type: n2-standard-4
|
||||
name: test-lb-a
|
||||
network_interface:
|
||||
- access_config: []
|
||||
alias_ip_range:
|
||||
- ip_cidr_range: 192.168.1.0/24
|
||||
subnetwork_range_name: ip-range-a
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
- access_config: []
|
||||
alias_ip_range: []
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/management
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
||||
project: my-project
|
||||
tags: null
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance_group.unmanaged[0]:
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
name: test-lb-a
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.bigip-vms["b"].google_compute_instance.default[0]:
|
||||
advanced_machine_features: []
|
||||
allow_stopping_for_update: true
|
||||
attached_disk: []
|
||||
boot_disk:
|
||||
- initialize_params:
|
||||
- image: projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742
|
||||
size: 100
|
||||
type: pd-ssd
|
||||
can_ip_forward: true
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
machine_type: n2-standard-4
|
||||
name: test-lb-b
|
||||
network_interface:
|
||||
- access_config: []
|
||||
alias_ip_range:
|
||||
- ip_cidr_range: 192.168.2.0/24
|
||||
subnetwork_range_name: ip-range-b
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
- access_config: []
|
||||
alias_ip_range: []
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/management
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
||||
project: my-project
|
||||
service_account:
|
||||
- scopes:
|
||||
- https://www.googleapis.com/auth/cloud-platform
|
||||
- https://www.googleapis.com/auth/userinfo.email
|
||||
tags: null
|
||||
zone: europe-west1-b
|
||||
module.f5-lb.module.bigip-vms["b"].google_compute_instance_group.unmanaged[0]:
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
name: test-lb-b
|
||||
named_port: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
zone: europe-west1-b
|
||||
module.f5-lb.module.lb-addresses.google_compute_address.external["ext-ipv4"]:
|
||||
address_type: EXTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-nlb-ext-ipv4
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
module.f5-lb.module.lb-addresses.google_compute_address.external["ext-ipv6"]:
|
||||
address_type: EXTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: IPV6
|
||||
ipv6_endpoint_type: NETLB
|
||||
name: test-nlb-ext-ipv6
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
module.f5-lb.module.lb-addresses.google_compute_address.internal["int-ipv4"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-ilb-int-ipv4
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.lb-addresses.google_compute_address.internal["int-ipv6"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: IPV6
|
||||
ipv6_endpoint_type: null
|
||||
name: test-ilb-int-ipv6
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_forwarding_rule.forwarding_rules["int-ipv4"]:
|
||||
all_ports: true
|
||||
allow_global_access: true
|
||||
ip_protocol: L3_DEFAULT
|
||||
ip_version: IPV4
|
||||
load_balancing_scheme: INTERNAL
|
||||
name: test-ilb-int-ipv4
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
ports: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_forwarding_rule.forwarding_rules["int-ipv6"]:
|
||||
all_ports: true
|
||||
allow_global_access: true
|
||||
ip_protocol: L3_DEFAULT
|
||||
ip_version: IPV6
|
||||
load_balancing_scheme: INTERNAL
|
||||
name: test-ilb-int-ipv6
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
ports: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
source_ip_ranges: null
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_health_check.default[0]:
|
||||
check_interval_sec: 5
|
||||
description: Terraform managed.
|
||||
healthy_threshold: 2
|
||||
name: test-ilb
|
||||
project: my-project
|
||||
tcp_health_check:
|
||||
- port: 65535
|
||||
port_name: null
|
||||
port_specification: USE_FIXED_PORT
|
||||
proxy_header: NONE
|
||||
timeout_sec: 5
|
||||
unhealthy_threshold: 2
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_region_backend_service.default:
|
||||
connection_draining_timeout_sec: 0
|
||||
description: Terraform managed.
|
||||
load_balancing_scheme: INTERNAL
|
||||
name: test-ilb
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
outlier_detection: []
|
||||
project: my-project
|
||||
protocol: UNSPECIFIED
|
||||
region: europe-west1
|
||||
module.f5-lb.module.passthrough-nlb[0].google_compute_forwarding_rule.forwarding_rules["ext-ipv4"]:
|
||||
all_ports: true
|
||||
allow_global_access: null
|
||||
ip_protocol: L3_DEFAULT
|
||||
ip_version: IPV4
|
||||
load_balancing_scheme: EXTERNAL
|
||||
name: test-nlb-ext-ipv4
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
module.f5-lb.module.passthrough-nlb[0].google_compute_forwarding_rule.forwarding_rules["ext-ipv6"]:
|
||||
all_ports: true
|
||||
allow_global_access: null
|
||||
ip_protocol: L3_DEFAULT
|
||||
ip_version: IPV6
|
||||
load_balancing_scheme: EXTERNAL
|
||||
name: test-nlb-ext-ipv6
|
||||
ports: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/ipv6_external
|
||||
module.f5-lb.module.passthrough-nlb[0].google_compute_region_backend_service.default:
|
||||
connection_draining_timeout_sec: 0
|
||||
description: Terraform managed.
|
||||
load_balancing_scheme: EXTERNAL
|
||||
locality_lb_policy: null
|
||||
name: test-nlb
|
||||
project: my-project
|
||||
protocol: UNSPECIFIED
|
||||
region: europe-west1
|
||||
module.f5-lb.module.passthrough-nlb[0].google_compute_region_health_check.default[0]:
|
||||
check_interval_sec: 5
|
||||
description: Terraform managed.
|
||||
grpc_health_check: []
|
||||
healthy_threshold: 2
|
||||
http2_health_check: []
|
||||
http_health_check: []
|
||||
https_health_check: []
|
||||
name: test-nlb
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
ssl_health_check: []
|
||||
tcp_health_check:
|
||||
- port: 65535
|
||||
port_name: null
|
||||
port_specification: USE_FIXED_PORT
|
||||
proxy_header: NONE
|
||||
timeout_sec: 5
|
||||
unhealthy_threshold: 2
|
||||
module.f5-lb.module.vm-addresses-dp.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-dp
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.vm-addresses-mgmt.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-mgmt
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
|
@ -0,0 +1,152 @@
|
|||
# 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.
|
||||
|
||||
values:
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance.default[0]:
|
||||
boot_disk:
|
||||
- initialize_params:
|
||||
- image: projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742
|
||||
size: 100
|
||||
type: pd-ssd
|
||||
can_ip_forward: true
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
machine_type: n2-standard-4
|
||||
name: test-lb-a
|
||||
network_interface:
|
||||
- access_config: []
|
||||
alias_ip_range:
|
||||
- ip_cidr_range: 192.168.1.0/24
|
||||
subnetwork_range_name: ip-range-a
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
- access_config: []
|
||||
alias_ip_range: []
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/management
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
||||
project: my-project
|
||||
tags: null
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance_group.unmanaged[0]:
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
name: test-lb-a
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.lb-addresses.google_compute_address.external["ext-ipv4"]:
|
||||
address_type: EXTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-nlb-ext-ipv4
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
module.f5-lb.module.bigip-vms["b"].google_compute_instance.default[0]:
|
||||
advanced_machine_features: []
|
||||
allow_stopping_for_update: true
|
||||
attached_disk: []
|
||||
boot_disk:
|
||||
- initialize_params:
|
||||
- image: projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742
|
||||
size: 100
|
||||
type: pd-ssd
|
||||
can_ip_forward: true
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
machine_type: n2-standard-4
|
||||
name: test-lb-b
|
||||
network_interface:
|
||||
- access_config: []
|
||||
alias_ip_range:
|
||||
- ip_cidr_range: 192.168.2.0/24
|
||||
subnetwork_range_name: ip-range-b
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
- access_config: []
|
||||
alias_ip_range: []
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/management
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
||||
project: my-project
|
||||
service_account:
|
||||
- scopes:
|
||||
- https://www.googleapis.com/auth/cloud-platform
|
||||
- https://www.googleapis.com/auth/userinfo.email
|
||||
tags: null
|
||||
zone: europe-west1-b
|
||||
module.f5-lb.module.bigip-vms["b"].google_compute_instance_group.unmanaged[0]:
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
name: test-lb-b
|
||||
named_port: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
zone: europe-west1-b
|
||||
module.f5-lb.module.passthrough-nlb[0].google_compute_forwarding_rule.forwarding_rules["ext-ipv4"]:
|
||||
all_ports: true
|
||||
allow_global_access: null
|
||||
allow_psc_global_access: null
|
||||
description: null
|
||||
ip_protocol: L3_DEFAULT
|
||||
ip_version: IPV4
|
||||
load_balancing_scheme: EXTERNAL
|
||||
name: test-nlb-ext-ipv4
|
||||
ports: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
module.f5-lb.module.passthrough-nlb[0].google_compute_region_health_check.default[0]:
|
||||
check_interval_sec: 5
|
||||
description: Terraform managed.
|
||||
healthy_threshold: 2
|
||||
name: test-nlb
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
tcp_health_check:
|
||||
- port: 65535
|
||||
port_name: null
|
||||
port_specification: USE_FIXED_PORT
|
||||
proxy_header: NONE
|
||||
timeout_sec: 5
|
||||
unhealthy_threshold: 2
|
||||
module.f5-lb.module.passthrough-nlb[0].google_compute_region_backend_service.default:
|
||||
description: Terraform managed.
|
||||
load_balancing_scheme: EXTERNAL
|
||||
name: test-nlb
|
||||
project: my-project
|
||||
protocol: UNSPECIFIED
|
||||
region: europe-west1
|
||||
module.f5-lb.module.vm-addresses-dp.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-dp
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.vm-addresses-mgmt.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-mgmt
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
|
@ -0,0 +1,112 @@
|
|||
# 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.
|
||||
|
||||
values:
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance.default[0]:
|
||||
boot_disk:
|
||||
- initialize_params:
|
||||
- image: projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742
|
||||
size: 100
|
||||
type: pd-ssd
|
||||
can_ip_forward: true
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
machine_type: n2-standard-4
|
||||
name: test-lb-a
|
||||
network_interface:
|
||||
- access_config: []
|
||||
alias_ip_range:
|
||||
- ip_cidr_range: 192.168.1.0/24
|
||||
subnetwork_range_name: ip-range-a
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
- access_config: []
|
||||
alias_ip_range: []
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/management
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
||||
project: my-project
|
||||
tags: null
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance_group.unmanaged[0]:
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
name: test-lb-a
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.lb-addresses.google_compute_address.internal["l4"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-ilb-l4
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_forwarding_rule.forwarding_rules["l4"]:
|
||||
all_ports: true
|
||||
allow_global_access: true
|
||||
allow_psc_global_access: null
|
||||
ip_protocol: L3_DEFAULT
|
||||
ip_version: IPV4
|
||||
load_balancing_scheme: INTERNAL
|
||||
name: test-ilb-l4
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
ports: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_health_check.default[0]:
|
||||
check_interval_sec: 5
|
||||
description: Terraform managed.
|
||||
healthy_threshold: 2
|
||||
name: test-ilb
|
||||
project: my-project
|
||||
tcp_health_check:
|
||||
- port: 65535
|
||||
port_name: null
|
||||
port_specification: USE_FIXED_PORT
|
||||
proxy_header: NONE
|
||||
timeout_sec: 5
|
||||
unhealthy_threshold: 2
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_region_backend_service.default:
|
||||
description: Terraform managed.
|
||||
load_balancing_scheme: INTERNAL
|
||||
name: test-ilb
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
protocol: UNSPECIFIED
|
||||
region: europe-west1
|
||||
module.f5-lb.module.vm-addresses-dp.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-dp
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.vm-addresses-mgmt.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-mgmt
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
|
@ -0,0 +1,156 @@
|
|||
# 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.
|
||||
|
||||
values:
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance.default[0]:
|
||||
boot_disk:
|
||||
- initialize_params:
|
||||
- image: projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742
|
||||
size: 150
|
||||
type: pd-ssd
|
||||
can_ip_forward: true
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
machine_type: n2-standard-8
|
||||
name: test-lb-a
|
||||
network_interface:
|
||||
- access_config: []
|
||||
alias_ip_range:
|
||||
- ip_cidr_range: 192.168.1.0/24
|
||||
subnetwork_range_name: ip-range-a
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
- access_config: []
|
||||
alias_ip_range: []
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/management
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
||||
project: my-project
|
||||
tags:
|
||||
- f5-lbs
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance_group.unmanaged[0]:
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
name: test-lb-a
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.lb-addresses.google_compute_address.internal["l4"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-ilb-l4
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.bigip-vms["b"].google_compute_instance.default[0]:
|
||||
advanced_machine_features: []
|
||||
allow_stopping_for_update: true
|
||||
attached_disk: []
|
||||
boot_disk:
|
||||
- initialize_params:
|
||||
- image: projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742
|
||||
size: 150
|
||||
type: pd-ssd
|
||||
can_ip_forward: true
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
machine_type: n2-standard-8
|
||||
name: test-lb-b
|
||||
network_interface:
|
||||
- access_config: []
|
||||
alias_ip_range:
|
||||
- ip_cidr_range: 192.168.2.0/24
|
||||
subnetwork_range_name: ip-range-b
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
- access_config: []
|
||||
alias_ip_range: []
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/management
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
||||
project: my-project
|
||||
service_account:
|
||||
- scopes:
|
||||
- https://www.googleapis.com/auth/cloud-platform
|
||||
- https://www.googleapis.com/auth/userinfo.email
|
||||
tags:
|
||||
- f5-lbs
|
||||
zone: europe-west1-b
|
||||
module.f5-lb.module.bigip-vms["b"].google_compute_instance_group.unmanaged[0]:
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
name: test-lb-b
|
||||
named_port: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
zone: europe-west1-b
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_forwarding_rule.forwarding_rules["l4"]:
|
||||
all_ports: true
|
||||
allow_global_access: true
|
||||
allow_psc_global_access: null
|
||||
ip_protocol: L3_DEFAULT
|
||||
ip_version: IPV4
|
||||
load_balancing_scheme: INTERNAL
|
||||
name: test-ilb-l4
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
ports: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_health_check.default[0]:
|
||||
check_interval_sec: 5
|
||||
description: Terraform managed.
|
||||
healthy_threshold: 2
|
||||
name: test-ilb
|
||||
project: my-project
|
||||
tcp_health_check:
|
||||
- port: 65535
|
||||
port_name: null
|
||||
port_specification: USE_FIXED_PORT
|
||||
proxy_header: NONE
|
||||
timeout_sec: 5
|
||||
unhealthy_threshold: 2
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_region_backend_service.default:
|
||||
description: Terraform managed.
|
||||
load_balancing_scheme: INTERNAL
|
||||
name: test-ilb
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
protocol: UNSPECIFIED
|
||||
region: europe-west1
|
||||
module.f5-lb.module.vm-addresses-dp.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-dp
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.vm-addresses-mgmt.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-mgmt
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
|
@ -0,0 +1,112 @@
|
|||
# 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.
|
||||
|
||||
values:
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance.default[0]:
|
||||
boot_disk:
|
||||
- initialize_params:
|
||||
- image: projects/f5-7626-networks-public/global/images/f5-bigip-15-1-2-1-0-0-10-byol-ltm-2boot-loc-210115160742
|
||||
size: 100
|
||||
type: pd-ssd
|
||||
can_ip_forward: true
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
machine_type: n2-standard-4
|
||||
name: test-lb-a
|
||||
network_interface:
|
||||
- access_config: []
|
||||
alias_ip_range:
|
||||
- ip_cidr_range: 192.168.1.0/24
|
||||
subnetwork_range_name: ip-range-a
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
- access_config: []
|
||||
alias_ip_range: []
|
||||
ipv6_access_config: []
|
||||
network: projects/my-project/global/networks/management
|
||||
stack_type: IPV4_ONLY
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
||||
project: my-project
|
||||
tags: null
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.bigip-vms["a"].google_compute_instance_group.unmanaged[0]:
|
||||
description: Managed by the compute-vm Terraform module.
|
||||
name: test-lb-a
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
zone: europe-west1-a
|
||||
module.f5-lb.module.lb-addresses.google_compute_address.internal["l4"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-ilb-l4
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_forwarding_rule.forwarding_rules["l4"]:
|
||||
all_ports: true
|
||||
allow_global_access: true
|
||||
allow_psc_global_access: null
|
||||
ip_protocol: L3_DEFAULT
|
||||
ip_version: IPV4
|
||||
load_balancing_scheme: INTERNAL
|
||||
name: test-ilb-l4
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
ports: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_health_check.default[0]:
|
||||
check_interval_sec: 5
|
||||
description: Terraform managed.
|
||||
healthy_threshold: 2
|
||||
name: test-ilb
|
||||
project: my-project
|
||||
tcp_health_check:
|
||||
- port: 65535
|
||||
port_name: null
|
||||
port_specification: USE_FIXED_PORT
|
||||
proxy_header: NONE
|
||||
timeout_sec: 5
|
||||
unhealthy_threshold: 2
|
||||
module.f5-lb.module.passthrough-ilb[0].google_compute_region_backend_service.default:
|
||||
description: Terraform managed.
|
||||
load_balancing_scheme: INTERNAL
|
||||
name: test-ilb
|
||||
network: projects/my-project/global/networks/dataplane
|
||||
project: my-project
|
||||
protocol: UNSPECIFIED
|
||||
region: europe-west1
|
||||
module.f5-lb.module.vm-addresses-dp.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-dp
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/dataplane
|
||||
module.f5-lb.module.vm-addresses-mgmt.google_compute_address.internal["a"]:
|
||||
address_type: INTERNAL
|
||||
description: Terraform managed.
|
||||
ip_version: null
|
||||
ipv6_endpoint_type: null
|
||||
name: test-a-mgmt
|
||||
network: null
|
||||
project: my-project
|
||||
region: europe-west1
|
||||
subnetwork: projects/my-project/regions/europe-west1/subnetworks/management
|
Loading…
Reference in New Issue