From ecfbee1e038d190ebf55ae5dd1d2a868b0a64cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20T=C3=B6lle?= Date: Sat, 25 Feb 2023 23:22:41 +0100 Subject: [PATCH] feat: deploy apricote.de --- apricote_de.tf | 64 ++++++++++++++++++++++++++++++++++++++++++++++ provider_vercel.tf | 8 ++++++ variables.tf | 6 +++++ versions.tf | 7 +++++ 4 files changed, 85 insertions(+) create mode 100644 apricote_de.tf create mode 100644 provider_vercel.tf diff --git a/apricote_de.tf b/apricote_de.tf new file mode 100644 index 0000000..05c4e55 --- /dev/null +++ b/apricote_de.tf @@ -0,0 +1,64 @@ +resource "vercel_project" "apricote_de" { + name = "apricote-de" + + framework = "hugo" + build_command = "hugo -D --gc -b https://$${SITE_URL:-$VERCEL_URL}" + + git_repository = { + type = "github" + repo = "apricote/apricote.de" + } +} + +# Override the VERCEL_URL for production deployment, used as Hugo base domain, +# see "build_command" above. +resource "vercel_project_environment_variable" "apricote_de_site_url" { + project_id = vercel_project.apricote_de.id + key = "SITE_URL" + value = vercel_project_domain.apricote_de.domain + target = ["production"] +} + +resource "vercel_project_environment_variable" "apricote_de_listory_token" { + project_id = vercel_project.apricote_de.id + key = "HUGO_LISTORY_TOKEN" + value = var.listory_token + target = ["production", "preview", "development"] +} + +resource "vercel_project_environment_variable" "apricote_de_listory_host" { + project_id = vercel_project.apricote_de.id + key = "HUGO_LISTORY_HOST" + value = "https://listory.apricote.de/api/" + target = ["production", "preview", "development"] +} + +resource "vercel_project_domain" "apricote_de" { + project_id = vercel_project.apricote_de.id + domain = "apricote.de" +} + +# Redirect www. to @ +resource "vercel_project_domain" "www_apricote_de" { + project_id = vercel_project.apricote_de.id + domain = "www.${vercel_project_domain.apricote_de.domain}" + + redirect = vercel_project_domain.apricote_de.domain + redirect_status_code = 308 +} + +resource "hetznerdns_record" "apricote_de_a" { + zone_id = hetznerdns_zone.apricote_de.id + name = "@" + value = "76.76.21.21" # TODO: Get value from vercel provider + type = "A" + ttl = 60 +} + +resource "hetznerdns_record" "www_apricote_de" { + zone_id = hetznerdns_zone.apricote_de.id + name = "www" + value = "cname.vercel-dns.com." # TODO: Get value from vercel provider + type = "CNAME" + ttl = 60 +} diff --git a/provider_vercel.tf b/provider_vercel.tf new file mode 100644 index 0000000..cee4fed --- /dev/null +++ b/provider_vercel.tf @@ -0,0 +1,8 @@ +# Set the variable value in *.tfvars file +# or using -var="vercel_token=..." CLI option +variable "vercel_token" {} + + +provider "vercel" { + api_token = var.vercel_token +} diff --git a/variables.tf b/variables.tf index bef47ce..7d1925d 100644 --- a/variables.tf +++ b/variables.tf @@ -19,3 +19,9 @@ variable "github_token_flux_notifications" { type = string sensitive = true } + +variable "listory_token" { + description = "Listory API Token" + type = string + sensitive = true +} diff --git a/versions.tf b/versions.tf index 7881ded..d577a9f 100644 --- a/versions.tf +++ b/versions.tf @@ -9,6 +9,12 @@ terraform { source = "timohirt/hetznerdns" version = ">= 2.2.0" } + + vercel = { + source = "vercel/vercel" + version = ">= 0.11.4" + } + random = { source = "hashicorp/random" } @@ -21,3 +27,4 @@ terraform { } required_version = ">= 1.3.3" } +