Skip to content

adinhodovic/terraform-cloudflare-maintenance

main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

Terraform-Cloudflare-Maintenance

Terraform module to create a responsive Maintenance Page using Cloudflare Workers.

The module can be used through Terraform's registry.

Preview

Preview

You can preview the full page here.

Usage

A detailed explanation of the implementation can be found here.

Export cloudflare credentials

TF_VAR_cloudflare_email=xxx
TF_VAR_cloudflare_api_key=xxx
TF_VAR_cloudflare_account_id=xxx

If using a token, make sure it has all the necessary permissions

Simple maintenance page with your logo, fav icon, company name, font and email with multiple routes on the same domain:

module "hodovi_cc_maintenance" {
  source          = "git::git@github.com:adinhodovic/terraform-cloudflare-maintenance.git?ref=v0.6.0"
  cloudflare_zone = "hodovi.cc"
  patterns        = ["hodovi.cc/maintenance/*", "hodovi.cc/example/*"]
  company_name    = "HoneyLogic"
  email           = "support@honeylogic.io"
  statuspage_url  = "https://status.hodovi.cc"
  font            = "Poppins"
  logo_url        = "https://s3.eu-west-1.amazonaws.com/honeylogic.io/media/images/Honeylogic-blue.original.png"
  favicon_url     = "https://s3.eu-west-1.amazonaws.com/honeylogic.io/media/images/Honeylogic_-_icon.original.height-80.png"
}

Use the enabled flag to enable/disable the Cloudflare route when maintenance starts/ends:

module "hodovi_cc_maintenance" {
  source          = "git::git@github.com:adinhodovic/terraform-cloudflare-maintenance.git?ref=v0.6.0"
  enabled         = false
  cloudflare_zone = "hodovi.cc"
  patterns        = ["hodovi.cc/maintenance/*"]
  company_name    = "HoneyLogic"
  email           = "support@honeylogic.io"
  statuspage_url  = "null"
  font            = "Poppins"
  logo_url        = "https://s3.eu-west-1.amazonaws.com/honeylogic.io/media/images/Honeylogic-blue.original.png"
  favicon_url     = "https://s3.eu-west-1.amazonaws.com/honeylogic.io/media/images/Honeylogic_-_icon.original.height-80.png"
}

Example can be found in examples/root-example.

Requirements

Name Version
terraform >= 0.13
cloudflare > 2.0.0

Providers

Name Version
cloudflare > 2.0.0

Resources

Name Type
cloudflare_worker_route.this resource
cloudflare_worker_script.this resource
cloudflare_zones.this data source

Inputs

Name Description Type Default Required
cloudflare_zone n/a string n/a yes
company_name n/a string n/a yes
email The email address to used for support inquiries. string n/a yes
enabled Flag to create/delete the worker route. bool true no
favicon_url The favicon to be displayed. Defaults to a maintenance icon from the web. string "https://cdn1.iconfinder.com/data/icons/ios-11-glyphs/30/maintenance-512.png" no
font Google font that should be used. string "Poppins" no
logo_url The logo to be displayed. string n/a yes
patterns The DNS pattern list to deploy the maintenance page to. list(string) n/a yes
statuspage_url The status page address to get updated information. string "null" no
whitelist_ips The IPs that are whitelisted to bypass the maintenance page. string "null" no
whitelist_path The paths that are whitelisted defined with a regex expression to bypass the maintenance page. string "null" no

Notes

Get fonts from Google fonts. Ensure that the Google Font is identical in casing e.g "PT Sans" can't be "Pt Sans" otherwise it'll fail to fetch the font.