From 389ff29c28f4e41e1a4d66d597ab7494ef85ee45 Mon Sep 17 00:00:00 2001 From: Pedro Sousa <680496+pedrosousa@users.noreply.github.com> Date: Tue, 10 Dec 2024 18:18:11 +0000 Subject: [PATCH 1/3] [Rules] Snippets: Add Terraform config page --- .../docs/rules/snippets/create-api.mdx | 3 +- .../docs/rules/snippets/create-dashboard.mdx | 4 +- .../docs/rules/snippets/create-terraform.mdx | 45 +++++++++++++++++++ src/content/docs/rules/snippets/errors.mdx | 5 +-- .../docs/rules/snippets/examples/index.mdx | 2 +- 5 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 src/content/docs/rules/snippets/create-terraform.mdx diff --git a/src/content/docs/rules/snippets/create-api.mdx b/src/content/docs/rules/snippets/create-api.mdx index af5f93bae585cc..ea776b1f1d2134 100644 --- a/src/content/docs/rules/snippets/create-api.mdx +++ b/src/content/docs/rules/snippets/create-api.mdx @@ -1,8 +1,9 @@ --- -title: Configure via API +title: Configure Snippets via API pcx_content_type: how-to sidebar: order: 3 + label: Configure via API head: - tag: title content: Configure Snippets via API diff --git a/src/content/docs/rules/snippets/create-dashboard.mdx b/src/content/docs/rules/snippets/create-dashboard.mdx index c49892d54199eb..759f9c5c33736d 100644 --- a/src/content/docs/rules/snippets/create-dashboard.mdx +++ b/src/content/docs/rules/snippets/create-dashboard.mdx @@ -1,12 +1,12 @@ --- -title: Create in the dashboard +title: Create a snippet in the dashboard pcx_content_type: how-to sidebar: order: 2 + label: Create in the dashboard head: - tag: title content: Create a snippet in the dashboard - --- The snippet creation wizard will guide you through the following steps: diff --git a/src/content/docs/rules/snippets/create-terraform.mdx b/src/content/docs/rules/snippets/create-terraform.mdx new file mode 100644 index 00000000000000..3362dd70c1fa16 --- /dev/null +++ b/src/content/docs/rules/snippets/create-terraform.mdx @@ -0,0 +1,45 @@ +--- +title: Configure Snippets using Terraform +pcx_content_type: how-to +sidebar: + order: 4 + label: Configure using Terraform +head: + - tag: title + content: Configure Snippets using Terraform +--- + +You can create Snippets using the [Terraform Cloudflare provider](https://registry.terraform.io/providers/cloudflare/cloudflare/latest). + +To get started with Terraform for Cloudflare configuration, refer to [Terraform: Get started](/terraform/installing/). + +## Example configuration + +The following example Terraform configuration creates a snippet and an associated snippet rule that defines when the snippet code will run. The snippet code is loaded from the `file1.js` file in your machine. + +```tf +resource "cloudflare_snippet" "my_snippet" { + zone_id = "" + name = "test_snippet_1" + main_module = "file1.js" + files { + name = "file1.js" + content = file("file1.js") + } +} + +resource "cloudflare_snippet_rules" "cookie_snippet_rule" { + zone_id = "" + rules { + enabled = true + expression = "http.cookie eq \"a=b\"" + description = "Trigger snippet on specific cookie" + snippet_name = "test_snippet_1" + } + depends_on = ["cloudflare_snippet.my_snippet"] +} +``` + +## More resources + +Refer to the [Terraform Cloudflare provider documentation](https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs) for more information on the `cloudflare_snippet` and `cloudflare_snippet_rules` resources. diff --git a/src/content/docs/rules/snippets/errors.mdx b/src/content/docs/rules/snippets/errors.mdx index 82ceaba555f5af..7399b203d540ff 100644 --- a/src/content/docs/rules/snippets/errors.mdx +++ b/src/content/docs/rules/snippets/errors.mdx @@ -2,14 +2,13 @@ title: Common errors pcx_content_type: troubleshooting sidebar: - order: 4 + order: 8 head: - tag: title content: Common errors - --- -import { GlossaryTooltip } from "~/components" +import { GlossaryTooltip } from "~/components"; Cloudflare Snippets may encounter specific errors during execution. Here are the common errors: diff --git a/src/content/docs/rules/snippets/examples/index.mdx b/src/content/docs/rules/snippets/examples/index.mdx index 8a4522691d2c8b..568018e12cd88b 100644 --- a/src/content/docs/rules/snippets/examples/index.mdx +++ b/src/content/docs/rules/snippets/examples/index.mdx @@ -4,7 +4,7 @@ hideChildren: true pcx_content_type: navigation title: Examples sidebar: - order: 3 + order: 7 --- import { ListExamples } from "~/components"; From b0224939aa69bd4bff79195bdf29928bb7de2d83 Mon Sep 17 00:00:00 2001 From: Pedro Sousa <680496+pedrosousa@users.noreply.github.com> Date: Wed, 11 Dec 2024 10:55:51 +0000 Subject: [PATCH 2/3] Clarify snippet name restrictions --- src/content/docs/rules/snippets/create-terraform.mdx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/content/docs/rules/snippets/create-terraform.mdx b/src/content/docs/rules/snippets/create-terraform.mdx index 3362dd70c1fa16..4212398ef282fc 100644 --- a/src/content/docs/rules/snippets/create-terraform.mdx +++ b/src/content/docs/rules/snippets/create-terraform.mdx @@ -20,7 +20,7 @@ The following example Terraform configuration creates a snippet and an associate ```tf resource "cloudflare_snippet" "my_snippet" { zone_id = "" - name = "test_snippet_1" + name = "my_test_snippet_1" main_module = "file1.js" files { name = "file1.js" @@ -34,12 +34,16 @@ resource "cloudflare_snippet_rules" "cookie_snippet_rule" { enabled = true expression = "http.cookie eq \"a=b\"" description = "Trigger snippet on specific cookie" - snippet_name = "test_snippet_1" + snippet_name = "my_test_snippet_1" } depends_on = ["cloudflare_snippet.my_snippet"] } ``` +The name of a snippet can only contain the characters `a-z`, `0-9`, and `_` (underscore). The name must be unique in the context of the zone. + +All `snippet_name` values in the `cloudflare_snippet_rules` resource must match the names of existing snippets. + ## More resources Refer to the [Terraform Cloudflare provider documentation](https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs) for more information on the `cloudflare_snippet` and `cloudflare_snippet_rules` resources. From f26f55ba26a9a606fdab3ba33dcd315412583354 Mon Sep 17 00:00:00 2001 From: Pedro Sousa <680496+pedrosousa@users.noreply.github.com> Date: Wed, 11 Dec 2024 14:19:58 +0000 Subject: [PATCH 3/3] Add changelog entry --- src/content/changelogs/rules.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/content/changelogs/rules.yaml b/src/content/changelogs/rules.yaml index 76581f6a028199..a6178be83a9509 100644 --- a/src/content/changelogs/rules.yaml +++ b/src/content/changelogs/rules.yaml @@ -5,6 +5,10 @@ productLink: "/rules/" productArea: Application performance productAreaLink: /fundamentals/reference/changelog/performance/ entries: + - publish_date: "2024-12-11" + title: Snippets support in the Cloudflare provider for Terraform + description: |- + You can now manage Snippets using Terraform. For more information, refer to [Configure Snippets using Terraform](/rules/snippets/create-terraform/). - publish_date: "2024-11-22" title: Support for Cloudflare R2 object storage in Cloud Connector description: |-