Skip to content

Terraform modules to deploy F5 BIG-IP instances ready for HA configuration

License

Notifications You must be signed in to change notification settings

f5devcentral/terraform-google-f5-bigip-ha

Repository files navigation

BIG-IP HA on Google Cloud

NOTE: Pre-release module!

This Terraform module will create two BIG-IP instances that will have the required infrastructure for high-availability using Device Groups and Failover Sync.

Details

Requirements

Name Version
terraform >= 0.14.5
google >= 3.85.0

Modules

Name Source Version
instances F5Networks/bigip-module/gcp 1.1.0

Resources

Name Type
google_compute_firewall.data_sync resource
google_compute_firewall.mgt_sync resource
google_compute_instance_group.group resource
google_compute_target_instance.target resource
google_compute_subnetwork.dsc_data data source
google_compute_subnetwork.dsc_mgmt data source

Inputs

Name Description Type Default Required
prefix The prefix to use when naming resources managed by this module. Must be RFC1035
compliant and between 1 and 58 characters in length, inclusive.
string n/a yes
project_id The GCP project identifier where the BIG-IP HA pair will be created string n/a yes
service_account The email address of the service account which will be used for BIG-IP instances. string n/a yes
zones The compute zones where where the BIG-IP instances will be deployed. At least one
zone must be provided; if more than one zone is given, the instances will be
distributed among them.
list(string) n/a yes
AS3_URL URL to download the BIG-IP Application Service Extension 3 (AS3) module string "https://github.com/F5Networks/f5-appsvcs-extension/releases/download/v3.28.0/f5-appsvcs-3.28.0-3.noarch.rpm" no
CFE_URL URL to download the BIG-IP Cloud Failover Extension module string "https://github.com/F5Networks/f5-cloud-failover-extension/releases/download/v1.8.0/f5-cloud-failover-1.8.0-0.noarch.rpm" no
DO_URL URL to download the BIG-IP Declarative Onboarding module string "https://github.com/F5Networks/f5-declarative-onboarding/releases/download/v1.21.0/f5-declarative-onboarding-1.21.0-3.noarch.rpm" no
FAST_URL URL to download the BIG-IP FAST module string "https://github.com/F5Networks/f5-appsvcs-templates/releases/download/v1.9.0/f5-appsvcs-templates-1.9.0-1.noarch.rpm" no
INIT_URL URL to download the BIG-IP runtime init string "https://cdn.f5.com/product/cloudsolutions/f5-bigip-runtime-init/v1.2.1/dist/f5-bigip-runtime-init-1.2.1-1.gz.run" no
TS_URL URL to download the BIG-IP Telemetry Streaming module string "https://github.com/F5Networks/f5-telemetry-streaming/releases/download/v1.20.0/f5-telemetry-1.20.0-3.noarch.rpm" no
automatic_restart Determines if the BIG-IP VMs should be automatically restarted if terminated by
GCE. Defaults to true to match expected GCE behaviour.
bool true no
custom_user_data Override the onboarding BASH script used by F5Networks/terraform-gcp-bigip-module. string null no
disk_size_gb Use this flag to set the boot volume size in GB. If left at the default value
the boot disk will have the same size as the base image.
number null no
disk_type The boot disk type to use with instances; can be 'pd-balanced', 'pd-ssd' (default),
or 'pd-standard'.
string "pd-ssd" no
external_subnet_ids TODO @memes - update
list(list(object({
subnet_id = string
public_ip = bool
private_ip_primary = string
private_ip_secondary = string
})))
[
[
{
"private_ip_primary": null,
"private_ip_secondary": null,
"public_ip": null,
"subnet_id": null
}
],
[
{
"private_ip_primary": null,
"private_ip_secondary": null,
"public_ip": null,
"subnet_id": null
}
]
]
no
f5_password The admin password of the F5 Bigip that will be deployed string "" no
f5_ssh_publickey The path to the SSH public key to install on BIG-IP instances for admin access. string "~/.ssh/id_rsa.pub" no
f5_username The admin username of the F5 Bigip that will be deployed string "bigipuser" no
gcp_secret_manager_authentication Whether to use secret manager to pass authentication bool false no
gcp_secret_name The secret to get the secret version for string "" no
gcp_secret_version (Optional)The version of the secret to get. If it is not provided, the latest version is retrieved. string "latest" no
image The self-link URI for a BIG-IP image to use as a base for the VM cluster. This
can be an official F5 image from GCP Marketplace, or a customised image.
string "projects/f5-7626-networks-public/global/images/f5-bigip-16-1-1-0-0-16-payg-good-1gbps-210917181041" no
internal_subnet_ids TODO @memes - update
list(list(object({
subnet_id = string
public_ip = bool
private_ip_primary = string
})))
[
[
{
"private_ip_primary": null,
"public_ip": null,
"subnet_id": null
}
],
[
{
"private_ip_primary": null,
"public_ip": null,
"subnet_id": null
}
]
]
no
labels An optional map of string key:value pairs that will be applied to all resources
created that accept labels. Default is an empty map.
map(string) {} no
libs_dir Directory on the BIG-IP to download the A&O Toolchain into string "/config/cloud/gcp/node_modules" no
machine_type The machine type to use for BIG-IP VMs; this may be a standard GCE machine type,
or a customised VM ('custom-VCPUS-MEM_IN_MB'). Default value is 'n1-standard-4'.
Note: machine_type is highly-correlated with network bandwidth and performance;
an N2 machine type will give better performance but has limited regional availability.
string "n1-standard-4" no
metadata Provide custom metadata values for BIG-IP instance map(string) {} no
mgmt_subnet_ids TODO @memes - update
List of maps of subnetids of the virtual network where the virtual machines will reside.
list(list(object({
subnet_id = string
public_ip = bool
private_ip_primary = string
})))
[
[
{
"private_ip_primary": null,
"public_ip": null,
"subnet_id": null
}
],
[
{
"private_ip_primary": null,
"public_ip": null,
"subnet_id": null
}
]
]
no
min_cpu_platform An optional constraint used when scheduling the BIG-IP VMs; this value prevents
the VMs from being scheduled on hardware that doesn't meet the minimum CPU
micro-architecture. Default value is 'Intel Skylake'.
string "Intel Skylake" no
onboard_log Directory on the BIG-IP to store the cloud-init logs string "/var/log/startup-script.log" no
preemptible If set to true, the BIG-IP instances will be deployed on preemptible VMs, which
could be terminated at any time, and have a maximum lifetime of 24 hours. Default
value is false. DO NOT SET TO TRUE UNLESS YOU UNDERSTAND THE RAMIFICATIONS!
string false no
sleep_time The number of seconds/minutes of delay to build into creation of BIG-IP VMs; default is 250. BIG-IP requires a few minutes to complete the onboarding process and this value can be used to delay the processing of dependent Terraform resources. string "300s" no
targets Defines the target types to create for integration with GCP forwarding-rules, and/or
load balancers.
object({
groups = bool
instances = bool
})
{
"groups": true,
"instances": false
}
no

Outputs

Name Description
mgmtPublicIPs A map of BIG-IP instance name to public IP address, if any, on the management interface.
names The instance names of the BIG-IPs.
self_links A map of BIG-IP instance name to fully-qualified self-links.
target_groups A list of fully-qualified BIG-IP unmanaged instance group self-links.
target_instances A list of fully-qualified target instance self-links for the BIG-IPs.

About

Terraform modules to deploy F5 BIG-IP instances ready for HA configuration

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published