From 619435c32e6659b5d0e9f34f63ad1a95b39f6700 Mon Sep 17 00:00:00 2001 From: sarna Date: Wed, 9 Sep 2026 15:43:36 -0700 Subject: [PATCH] Add docs for managing Google deployments via F5 ADS TF provider This commit basic instructions on how a customer can leverage our terraform provider to create a GCP deployment with a frontend type. --- .../google/terraform-prerequisites.md | 6 + content/nginxaas/changelog.md | 11 ++ .../create-deployment/deploy-terraform.md | 147 ++++++++++++++++++ .../nginx-configuration-console.md | 10 ++ 4 files changed, 174 insertions(+) create mode 100644 content/nginxaas/google/deploy/create-deployment/deploy-terraform.md diff --git a/content/includes/nginxaas/google/terraform-prerequisites.md b/content/includes/nginxaas/google/terraform-prerequisites.md index c33c49777..d504534f8 100644 --- a/content/includes/nginxaas/google/terraform-prerequisites.md +++ b/content/includes/nginxaas/google/terraform-prerequisites.md @@ -6,4 +6,10 @@ f5-files: --- - Confirm that you meet the [NGINXaaS Prerequisites]({{< ref "/nginxaas/google/deploy/prerequisites.md" >}}). +- Access to a Google Cloud project to manage your network resources. +- Access to the F5 NGINXaaS console to create client credentials. See [Programmatic authentication with client credentials]({{< ref "/nginxaas/overview/client-credentials.md" >}}). +- [Install Terraform](https://learn.hashicorp.com/tutorials/terraform/install). +{{< call-out class="important" >}} +The `F5Networks/f5ads` provider is in alpha (`0.1.0-alpha.1`). Pin this exact version in your `required_providers` block, since breaking changes can occur between alpha releases. +{{< /call-out >}} diff --git a/content/nginxaas/changelog.md b/content/nginxaas/changelog.md index 42c3ac736..c33082b6a 100644 --- a/content/nginxaas/changelog.md +++ b/content/nginxaas/changelog.md @@ -13,6 +13,17 @@ Learn about the latest updates, new features, and resolved bugs in F5 NGINXaaS. To see a list of currently active issues, visit the [Known issues]({{< ref "/nginxaas/google/known-issues.md" >}}) page. +## September 9, 2026 + +- {{% icon-feature %}} **F5 ADS Terraform provider is now available (Alpha)** + +You can now manage NGINXaaS for Google Cloud deployments with the first release of the `F5Networks/f5ads` Terraform provider, version `0.1.0-alpha.1`. + +- [Provider docs](https://registry.terraform.io/providers/F5Networks/f5ads/latest/docs) +- [`f5ads_deployment` resource docs](https://registry.terraform.io/providers/F5Networks/f5ads/latest/docs/resources/deployment) +- [`f5ads_deployment` data source docs](https://registry.terraform.io/providers/F5Networks/f5ads/latest/docs/data-sources/deployment) +- [Deploy using the F5 ADS Terraform provider]({{< ref "/nginxaas/google/deploy/create-deployment/deploy-terraform.md" >}}) + ## September 4, 2026 - {{% icon-feature %}} **NGINXaaS for Google is now generally available in more regions** diff --git a/content/nginxaas/google/deploy/create-deployment/deploy-terraform.md b/content/nginxaas/google/deploy/create-deployment/deploy-terraform.md new file mode 100644 index 000000000..a4a6c434b --- /dev/null +++ b/content/nginxaas/google/deploy/create-deployment/deploy-terraform.md @@ -0,0 +1,147 @@ +--- +title: Deploy using the Terraform provider +weight: 100 +toc: true +f5-docs: DOCS-000 +url: /nginxaas/google/deploy/create-deployment/deploy-terraform/ +f5-content-type: how-to +f5-product: NGINXaaS for Google Cloud +--- + +## Overview + +This guide explains how to create an F5 NGINXaaS for Google Cloud (NGINXaaS) deployment using the [`F5Networks/f5ads` Terraform provider](https://registry.terraform.io/providers/F5Networks/f5ads/latest/docs). This guide only covers creating a deployment. + +## Prerequisites + +{{< include "/nginxaas/google/terraform-prerequisites.md" >}} + +## Configure the provider + +Add the `f5ads` provider to your Terraform configuration and pin it to the exact alpha version: + +```hcl +terraform { + required_providers { + f5ads = { + source = "F5Networks/f5ads" + version = "0.1.0-alpha.1" + } + } +} + +provider "f5ads" { + geo = "us" +} +``` + +The provider needs your F5 ADS client credentials to authenticate. You can supply them in the provider block, or with environment variables: + +```hcl +provider "f5ads" { + geo = "us" + client_id = "your-client-id" + client_secret = "your-client-secret" +} +``` + +```shell +export F5ADS_GEO="us" +export F5ADS_CLIENT_ID="your-client-id" +export F5ADS_CLIENT_SECRET="your-client-secret" +``` + +## Create GCP network resources + +Include the following snippet if you need to create a VPC, subnet, and [network attachment](https://cloud.google.com/vpc/docs/about-network-attachments) for your deployment. Add the [`hashicorp/google` provider](https://registry.terraform.io/providers/hashicorp/google/latest/docs) to authenticate to your GCP project. + +```hcl +provider "google" { + region = "us-east1" +} + +resource "google_compute_network" "vpc" { + name = "my-vpc" + auto_create_subnetworks = false +} + +resource "google_compute_subnetwork" "subnet" { + name = "my-subnet" + ip_cidr_range = "10.0.0.0/24" + region = "us-east1" + network = google_compute_network.vpc.id +} + +resource "google_compute_network_attachment" "attachment" { + name = "my-network-attachment" + region = "us-east1" + connection_preference = "ACCEPT_AUTOMATIC" + subnetworks = [google_compute_subnetwork.subnet.id] +} +``` + +{{< call-out class="caution" >}} +The `f5ads` provider currently only supports network attachments with `connection_preference` set to `ACCEPT_AUTOMATIC`, which accepts connections from all projects. Support for `ACCEPT_MANUAL` is planned for an upcoming release. See [Google's documentation on creating a network attachment](https://cloud.google.com/vpc/docs/create-manage-network-attachments#create-network-attachments) for details. +{{< /call-out >}} + +## Create a deployment + +{{< call-out class="important" >}} +Create or reuse an existing configuration in the [F5 ADS Console]({{< ref "/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md" >}}) first, then supply its [Configuration ID and Configuration Version ID]({{< ref "/nginxaas/google/deploy/nginx-configuration/nginx-configuration-console.md#get-nginx-configuration-version-information" >}}) below. +{{< /call-out >}} + +Choose a frontend type for your deployment. Refer to [Service frontend]({{< ref "/nginxaas/google/overview.md#service-frontend" >}}) for more information on these two frontend types. + +To use a managed public endpoint: + +```hcl +resource "f5ads_deployment" "example" { + name = "my-deployment" + capacity = 20 + waf_enabled = true + nginx_config_id = "cfg_example123" + nginx_config_version_id = "cv_example456" + + google_cloud_properties = { + region = "us-east1" + network_attachment = google_compute_network_attachment.attachment.id + + frontend = { + managed_public_endpoint = { + acl = [ + { + source_prefixes = ["0.0.0.0/0"] + port_range = "80" + protocol = "tcp" + }, + { + source_prefixes = ["0.0.0.0/0"] + port_range = "443" + protocol = "tcp" + }, + ] + } + } + } +} +``` + +To use a private endpoint instead, replace the `managed_public_endpoint` block with a `private_endpoint` block: + +```hcl + frontend = { + private_endpoint = { + service_attachment_accept_list = [ + "my-gcp-project", + ] + } + } +``` + +Create the deployment: + +```shell +terraform init +terraform plan +terraform apply +``` diff --git a/content/nginxaas/overview/nginx-configuration/nginx-configuration-console.md b/content/nginxaas/overview/nginx-configuration/nginx-configuration-console.md index 99c897a3d..e698bb08c 100644 --- a/content/nginxaas/overview/nginx-configuration/nginx-configuration-console.md +++ b/content/nginxaas/overview/nginx-configuration/nginx-configuration-console.md @@ -24,6 +24,16 @@ You can apply an NGINX configuration to your F5 ${product} deployment using the {{< include "/nginxaas/update-nginx-config.md" >}} +## Get NGINX Configuration version information + +In the NGINXaaS Console, + +1. On the left menu, select **Configurations**. +1. Select your desired configuration. +2. Select **Details**. +3. Note the NGINX Configuration **Object ID** and **Latest Version ID** for your reference. + + ## Delete NGINX configuration files 1. On the left menu, select **Configurations**.