Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions content/includes/nginxaas/google/terraform-prerequisites.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 >}}
11 changes: 11 additions & 0 deletions content/nginxaas/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -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**
Expand Down
147 changes: 147 additions & 0 deletions content/nginxaas/google/deploy/create-deployment/deploy-terraform.md
Original file line number Diff line number Diff line change
@@ -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
---

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the frontmatter is incomplete, missing:
description
f5-summary
f5-keywords
f5-audience

https://github.com/nginx/documentation/blob/main/templates/how-to/guide-how-to.md#frontmatter-fields

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JTorreG Do you have examples of what these values might be? P.S I am looking the deploy-console.md page at the same level which has what I have on the Terraform page.


## 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
```
Original file line number Diff line number Diff line change
Expand Up @@ -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**.
Expand Down
Loading