diff --git a/src/content/docs/terraform/tutorial/initialize-terraform.mdx b/src/content/docs/terraform/tutorial/initialize-terraform.mdx
index b41e62cbc823c5c..336e2025853e9c0 100644
--- a/src/content/docs/terraform/tutorial/initialize-terraform.mdx
+++ b/src/content/docs/terraform/tutorial/initialize-terraform.mdx
@@ -10,30 +10,22 @@ head:
import { Render } from "~/components";
-This tutorial shows you how to get started with Terraform. The tutorial uses an example scenario where you have a web server for your domain, accessible on `203.0.113.10`, and you just signed up your domain (`example.com`) on Cloudflare to manage everything in Terraform.
+This tutorial shows you how to get started with Terraform. You just signed up your domain (`example.com`) on Cloudflare to manage everything in Terraform and now you will create a DNS record pointing `www.example.com` to a web server at `203.0.113.10`.
-Before you begin, ensure you have [installed Terraform](/terraform/installing/). You will also need to [create an API Token](/fundamentals/api/get-started/create-token/) with permissions to edit resources for this tutorial.
+Before you begin, ensure you have:
+* [Installed Terraform](/terraform/installing/)
+* [Created an API Token](/fundamentals/api/get-started/create-token/) with permissions to edit resources for this tutorial
-
+## 1. Create your configuration
-## 1. Define your first Terraform config file
-
-Create an initial Terraform config file, filling in your own values for the [API token](/fundamentals/api/get-started/create-token/), [zone ID](/fundamentals/account/find-account-and-zone-ids/), [account ID](/fundamentals/account/find-account-and-zone-ids/), and [domain](/fundamentals/manage-domains/add-site/).
-
-Terraform will process any files with a `.tf` extension. As the configuration becomes more complex, you will want to split the config into separate files and modules. For now, proceed with a single file.
-
-:::caution
-
-To prevent accidentally exposing your Cloudflare credentials, do not save this file in your version control system. The [next tutorial](/terraform/tutorial/track-history/) will cover best practices for passing in your API token.
-:::
+Create a file named `main.tf`, filling in your own values for the [API token](/fundamentals/api/get-started/create-token/), [zone ID](/fundamentals/account/find-account-and-zone-ids/), [account ID](/fundamentals/account/find-account-and-zone-ids/), and [domain](/fundamentals/manage-domains/add-site/):
```bash
-cat > cloudflare.tf <<'EOF'
terraform {
required_providers {
cloudflare = {
- source = "cloudflare/cloudflare"
- version = "~> 4"
+ source = "cloudflare/cloudflare"
+ version = "~> 5"
}
}
}
@@ -54,189 +46,135 @@ variable "domain" {
default = ""
}
-resource "cloudflare_record" "www" {
- zone_id = var.zone_id
+resource "cloudflare_dns_record" "www" {
+ zone_id = ""
name = "www"
- value = "203.0.113.10"
+ content = "203.0.113.10"
type = "A"
+ ttl = 1
proxied = true
+ comment = "Domain verification record"
}
-EOF
-```
-
-## 2. Initialize Terraform and the Cloudflare provider
-
-After creating your basic configuration in HCL, initialize Terraform and ask it to apply the configuration to Cloudflare.
-
-```sh
-terraform init
```
+:::caution
-```sh output
-
-Initializing provider plugins...
-- Checking for available provider plugins on https://releases.hashicorp.com...
-- Downloading plugin for provider "cloudflare" (1.0.0)...
-
-The following providers do not have any version constraints in configuration,
-so the latest version was installed.
-
-To prevent automatic upgrades to new major versions that may contain breaking
-changes, it is recommended to add version = "..." constraints to the
-corresponding provider blocks in configuration, with the constraint strings
-suggested below.
-
-* provider.cloudflare: version = "~> 1.0"
-
-Terraform has been successfully initialized!
-
-You may now begin working with Terraform. Try running "terraform plan" to see
-any changes that are required for your infrastructure. All Terraform commands
-should now work.
+To prevent accidentally exposing your Cloudflare credentials, do not save this file in your version control system. The [next tutorial](/terraform/tutorial/track-history/) will cover best practices for passing in your API token.
+:::
-If you ever set or change modules or backend configuration for Terraform,
-rerun this command to reinitialize your working directory. If you forget, other
-commands will detect it and remind you to do so if necessary.
-```
+## 2. Initialize and plan
-When you run `terraform init`, any plugins required, such as the Cloudflare Terraform provider, are automatically downloaded and saved locally to a `.terraform` directory.
+Initialize Terraform to download the Cloudflare provider:
```sh
-find .terraform/
-```
-
-```sh output
-.terraform/
-.terraform/plugins
-.terraform/plugins/darwin_amd64
-.terraform/plugins/darwin_amd64/lock.json
-.terraform/plugins/darwin_amd64/terraform-provider-cloudflare_v1.0.0_x4
+terraform init
```
-## 3. Review the execution plan
-
-After installing the Cloudflare provider, review the proposed changes to your Cloudflare account so they match the configuration you previously defined.
+Review what will be created:
```sh
terraform plan
```
-
```sh output
-Terraform used the selected providers to generate the following execution plan.
-Resource actions are indicated with the following symbols:
+Terraform used the selected providers to generate the following execution plan. Resource actions are
+indicated with the following symbols:
+ create
Terraform will perform the following actions:
- # cloudflare_record.www will be created
- + resource "cloudflare_record" "www" {
- + allow_overwrite = false
- + created_on = (known after apply)
- + hostname = (known after apply)
- + id = (known after apply)
- + metadata = (known after apply)
- + modified_on = (known after apply)
- + name = "www"
- + proxiable = (known after apply)
- + proxied = true
- + ttl = (known after apply)
- + type = "A"
- + value = "203.0.113.10"
- + zone_id = "e2e6491340be87a3726f91fc4148b126"
+ # cloudflare_dns_record.www will be created
+ + resource "cloudflare_dns_record" "www" {
+ + comment = "Domain verification record"
+ + comment_modified_on = (known after apply)
+ + content = "203.0.113.10"
+ + created_on = (known after apply)
+ + id = (known after apply)
+ + meta = (known after apply)
+ + modified_on = (known after apply)
+ + name = "www"
+ + proxiable = (known after apply)
+ + proxied = true
+ + settings = (known after apply)
+ + tags = (known after apply)
+ + tags_modified_on = (known after apply)
+ + ttl = 1
+ + type = "A"
+ + zone_id = ""
}
Plan: 1 to add, 0 to change, 0 to destroy.
-
-------------------------------------------------------------------------
-
-Note: You didn't use the -out option to save this plan, so Terraform can't
-guarantee to take exactly these actions if you run "terraform apply" now.
```
-As displayed in the execution plan, Terraform will create a new DNS record. The output shows the values that you explicitly specified, such as the value of the `A` record (`203.0.113.10`). Values shown as `(known after apply)` are derived based on other API calls (for example, looking up the `metadata`), or the values are returned after the object is created.
-
-## 4. Apply your changes
+## 3. Apply and verify
-The `plan` command is important because it allows you to preview the changes for accuracy before actually making them. After you review the execution plan, apply your changes.
-
-You can use `--auto-approve` on the command line for a briefer output. Without this flag, Terraform will display the output of the Terraform plan and then ask for confirmation before applying it.
+Apply your configuration:
```sh
-terraform apply --auto-approve
+terraform apply
```
-```sh output
+Type `yes` when prompted.
-Terraform used the selected providers to generate the following execution plan.
-Resource actions are indicated with the following symbols:
+```sh output
+Terraform used the selected providers to generate the following execution plan. Resource actions are
+indicated with the following symbols:
+ create
Terraform will perform the following actions:
- # cloudflare_record.www will be created
- + resource "cloudflare_record" "www" {
- + allow_overwrite = false
- + created_on = (known after apply)
- + hostname = (known after apply)
- + id = (known after apply)
- + metadata = (known after apply)
- + modified_on = (known after apply)
- + name = "www"
- + proxiable = (known after apply)
- + proxied = true
- + ttl = (known after apply)
- + type = "A"
- + value = "203.0.113.10"
- + zone_id = "e2e6491340be87a3726f91fc4148b126"
+ # cloudflare_dns_record.www will be created
+ + resource "cloudflare_dns_record" "www" {
+ + comment = "Domain verification record"
+ + comment_modified_on = (known after apply)
+ + content = "203.0.113.10"
+ + created_on = (known after apply)
+ + id = (known after apply)
+ + meta = (known after apply)
+ + modified_on = (known after apply)
+ + name = "www"
+ + proxiable = (known after apply)
+ + proxied = true
+ + settings = (known after apply)
+ + tags = (known after apply)
+ + tags_modified_on = (known after apply)
+ + ttl = 1
+ + type = "A"
+ + zone_id = ""
}
Plan: 1 to add, 0 to change, 0 to destroy.
-cloudflare_record.www: Creation complete after 1s [id=c38d3103767284e7cd14d5dad3ab8668]
-Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
-```
+Do you want to perform these actions?
+ Terraform will perform the actions described above.
+ Only 'yes' will be accepted to approve.
+
+ Enter a value: yes
-## 5. Verify the results
+cloudflare_dns_record.www: Creating...
+cloudflare_dns_record.www: Creation complete after 0s
-Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and go to **DNS** > **Records**. The record created by Terraform appears in the records list.
+Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
+```
-To see the full results returned from the API call, including the default values that you did not specify but let Terraform compute, run `terraform show`.
+After creation, verify the DNS record:
```sh
-terraform show
+dig www.example.com
```
-```sh output
-# cloudflare_record.www:
-resource "cloudflare_record" "www" {
- id = "c38d3103767284e7cd14d5dad3ab8668"
- created_on = "2023-04-08T00:37:33.76321Z"
- data = []
- domain = "example.com"
- hostname = "www.example.com"
- metadata = [
- {
- auto_added = false
- managed_by_apps = false
- }
- ]
- modified_on = "2023-04-08T00:37:33.76321Z"
- name = "www"
- priority = 0
- proxiable = true
- proxied = true
- ttl = 1
- type = "A"
- value = "203.0.113.10"
- zone_id = "e2e6491340be87a3726f91fc4148b126"
-}
-```
+Test the web server response:
```sh
curl https://www.example.com
```
-
```sh output
Hello, this is 203.0.113.10!
```
+
+To see the full results returned from the API call:
+
+```sh
+terraform show
+```
+
+You can also check the [Cloudflare dashboard](https://dash.cloudflare.com) and go to **DNS** > **Records**.