Terraform simplifies the duplication of CDN configurations across environments, ensuring consistency and reliability. By managing environment-specific variables and using workspaces, you can maintain identical setups across your staging and production environments.
TipTo proceed with the following steps, you need to have API keys configured.

Step 1: Define variables

One of the key benefits of Terraform is its ability to manage configurations through variables, making it easier to handle environment-specific settings. Create a variables.tf file to define parameters that change between environments, such as API URL, token, or CDN resource names.
// variables.tf
variable "api_token" {
  description = "API token for access to your Gcore account"
  type        = string
  sensitive   = true
}
variable "api_endpoint" {
  description = "Gcore API url"
  type        = string
}
variable "cdn_resource_cname" {
  description = "Name of the CDN resource"
  type        = string
}

Step 2: Configure environment variables

Create .tfvars file for each environment to set the variable values. For example, for preproduction:
// preprod.tfvars
api_token          = "your-preprod-api-token"
api_endpoint       = "https://api.preprod.world"
cdn_resource_cname = "preprod.example.com"
And for production:
// production.tfvars
api_token          = "your-production-api-token"
api_endpoint       = "https://api.gcore.com"
cdn_resource_cname = "prod.example.com"

Step 3: Write configurarion for copying resources

Add the following Terraform configuration to the main.tf :
// main.tf
terraform {
  required_providers {
    gcore = {
      source  = "G-Core/gcore"
      version = ">= 0.8.20"
    }
  }
}
provider "gcore" {
  permanent_api_token = var.api_token
  api_endpoint = var.api_endpoint
}
resource "gcore_cdn_resource" "example" {
  cname  = var.cdn_resource_cname
  origin = "example.com"
}

Step 4: Use Terraform workspaces

Terraform workspaces allow you to manage multiple environments using the same configuration. Initialize Terraform: terraform init Then create workspaces for preproduction and production:
terraform workspace new preprod
terraform workspace new production

Step 5: Apply the configuration

Switch to the staging workspace and apply the configuration:
terraform workspace select staging
terraform apply -var-file=preprod.tfvars
Then switch to the production workspace and apply the configuration there as well:
terraform workspace select production
terraform apply -var-file=production.tfvars
By using Terraform workspaces and variable files, you can apply the same configuration to different environments with a few commands.