Skip to content

standardgalactic/terraform-cloudflare-maintenance

 
 

Repository files navigation

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.4.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.4.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

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
statuspage_url The status page address to get updated information. string null no
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
whitelist_ips The IPs that are white listed to bypass the maintenance page. string "placeholder" 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.

About

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

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 57.8%
  • HCL 42.2%