Conditional Resource Creation in Cloudflare with Terraform

When managing Cloudflare resources with Terraform, you may encounter scenarios where certain resources should only be created based on specific conditions. This can be achieved by utilizing variables defined in a .tfvars file. In this guide, we will explore how to omit resources conditionally using the count parameter.

Example Scenario

Suppose you have a Cloudflare DNS record resource defined in your Terraform configuration. Here’s how you can set it up to be conditionally created based on a variable:

Step 1: Define Your Variable

In your .tfvars file, you can define a variable to control whether the Cloudflare resource should be created or not:

cloudflare = false

Step 2: Configure the Resource with Count

In your Terraform configuration file, use the count parameter to conditionally create the resource based on the variable:

resource "cloudflare_record" "record" {
  count   = var.cloudflare ? 1 : 0  # Create resource only if cloudflare is true
  zone_id = data.cloudflare_zones.domain.zones[0].id
  name    = var.subdomain
  value   = var.origin_server
  type    = "CNAME"
  ttl     = 1
  proxied = true
}

Explanation

  • The count parameter determines how many instances of the resource to create. If var.cloudflare is true, the count will be set to 1, thus creating the resource. If false, the count will be 0, effectively omitting the resource.
  • This method allows for clean and manageable configurations without the need for complex conditional logic or dynamic blocks, which are typically used for modifying existing resources rather than omitting them entirely.

Conclusion

Using the count parameter in conjunction with variables from your .tfvars file provides a straightforward way to manage resource creation in Terraform. This approach enhances the flexibility of your infrastructure as code, allowing you to tailor configurations to different environments or requirements easily.