Terraform module to create a responsive Maintenance Page using Cloudflare Workers.
The module can be used through Terraform's registry.
You can preview the full page here.
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::[email protected]:adinhodovic/terraform-cloudflare-maintenance.git?ref=v0.6.0"
cloudflare_zone = "hodovi.cc"
patterns = ["hodovi.cc/maintenance/*", "hodovi.cc/example/*"]
company_name = "HoneyLogic"
email = "[email protected]"
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::[email protected]:adinhodovic/terraform-cloudflare-maintenance.git?ref=v0.6.0"
enabled = false
cloudflare_zone = "hodovi.cc"
patterns = ["hodovi.cc/maintenance/*"]
company_name = "HoneyLogic"
email = "[email protected]"
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.
Name | Version |
---|---|
terraform | >= 0.13 |
cloudflare | > 2.0.0 |
Name | Version |
---|---|
cloudflare | > 2.0.0 |
Name | Type |
---|---|
cloudflare_worker_route.this | resource |
cloudflare_worker_script.this | resource |
cloudflare_zones.this | data source |
Name | Description | Type | Default | Required |
---|---|---|---|---|
cloudflare_zone | n/a | string |
n/a | yes |
company_name | n/a | string |
n/a | yes |
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 |
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.