diff --git a/Makefile b/Makefile index d65a1d6..6b10301 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ include $(PWD)/src/toolchain/Makefile BACKEND_TF := $(wildcard infra/backend/*.tf) +MAIN_TF := $(wildcard infra/main/*.tf) ENVIRONMENT := production REGION := sfo3 ROOT_DIR := $(shell pwd) @@ -10,6 +11,15 @@ KEYS := \ 88823A75ECAA786B0FF38B148E401478A3FBEF72 \ 3D7C8D39E8C4DF771583D3F0A8A091FD346001CA +ifeq ("$(wildcard $(CACHE_DIR)/secrets/$(ENVIRONMENT).env)","") + gpg --decrypt \ + secrets/$(ENVIRONMENT).env.gpg \ + > $(CACHE_DIR)/secrets/$(ENVIRONMENT).env +endif + +include $(CACHE_DIR)/secrets/$(ENVIRONMENT).env +export $(shell sed 's/=.*//' $(CACHE_DIR)/secrets/$(ENVIRONMENT).env) + .DEFAULT_GOAL := .PHONY: default default: \ @@ -43,22 +53,21 @@ infra/backend/.terraform: \ infra/main/.terraform: \ $(OUT_DIR)/terraform \ - $(BACKEND_TF) + config/$(ENVIRONMENT).tfbackend \ + $(MAIN_TF) env -C infra/main $(TERRAFORM) init \ -backend-config="../../config/$(ENVIRONMENT).tfbackend" infra/backend/$(ENVIRONMENT).tfstate: \ - $(CACHE_DIR)/secrets/credentials.tfvars \ $(OUT_DIR)/terraform \ infra/backend/.terraform env -C infra/backend $(TERRAFORM) apply \ -var environment=$(ENVIRONMENT) \ -var namespace=$(ENVIRONMENT) \ -var region=$(REGION) \ - -state ../../$@ \ - -var-file ../../$< + -state ../../$@ -config/$(ENVIRONMENT).tfbackend: \ +config/$(ENVIRONMENT).tfbackend: | \ infra/backend/$(ENVIRONMENT).tfstate \ $(OUT_DIR)/terraform env -C infra/backend $(TERRAFORM) \ @@ -67,19 +76,17 @@ config/$(ENVIRONMENT).tfbackend: \ .PHONY: apply: \ - $(CACHE_DIR)/secrets/credentials.tfvars \ $(OUT_DIR)/terraform \ infra/main/.terraform env -C infra/main $(TERRAFORM) apply \ -var environment=$(ENVIRONMENT) \ -var namespace=$(ENVIRONMENT) \ - -var region=$(REGION) \ - -var-file ../../$< + -var region=$(REGION) $(CACHE_DIR)/secrets: mkdir -p $@ -$(CACHE_DIR)/secrets/%.tfvars: secrets/%.tfvars.gpg $(CACHE_DIR)/secrets +$(CACHE_DIR)/secrets/%.env: secrets/%.env.gpg $(CACHE_DIR)/secrets gpg --decrypt $< > $@ $(FETCH_DIR)/terraform: diff --git a/config/production.tfbackend b/config/production.tfbackend index 3fce4bc..e210661 100644 --- a/config/production.tfbackend +++ b/config/production.tfbackend @@ -1,4 +1,4 @@ bucket = "production-production-1c1362d9ef6afe0b" endpoint = "https://sfo3.digitaloceanspaces.com" key = "terraform.tfstate" -region = "sfo3" +region = "us-east-1" diff --git a/infra/backend/provider.tf b/infra/backend/provider.tf index 3c437ea..af8f0c8 100644 --- a/infra/backend/provider.tf +++ b/infra/backend/provider.tf @@ -4,23 +4,5 @@ terraform { source = "digitalocean/digitalocean" version = "2.25.2" } - acme = { - source = "vancluever/acme" - version = "~> 2.0" - } } } - -provider "digitalocean" { - token = var.do_token - spaces_access_id = var.spaces_access_id - spaces_secret_key = var.spaces_secret -} - -provider "acme" { - server_url = "https://acme-v02.api.letsencrypt.org/directory" -} - -variable "do_token" {} -variable "spaces_access_id" {} -variable "spaces_secret" {} diff --git a/infra/main/main.tf b/infra/main/main.tf index 508303d..95b3fca 100644 --- a/infra/main/main.tf +++ b/infra/main/main.tf @@ -7,5 +7,5 @@ variable "out_dir" { } resource "random_id" "suffix" { - byte_length = 8 + byte_length = 8 } diff --git a/infra/main/provider.tf b/infra/main/provider.tf index bb9b2dc..3f987f9 100644 --- a/infra/main/provider.tf +++ b/infra/main/provider.tf @@ -5,14 +5,10 @@ terraform { version = "2.25.2" } } + backend "s3" { + skip_requesting_account_id = true + skip_credentials_validation = true + skip_get_ec2_platforms = true + skip_metadata_api_check = true + } } - -provider "digitalocean" { - token = var.do_token - spaces_access_id = var.spaces_access_id - spaces_secret_key = var.spaces_secret -} - -variable "do_token" {} -variable "spaces_access_id" {} -variable "spaces_secret" {} \ No newline at end of file diff --git a/infra/main/website.tf b/infra/main/website.tf index e3170f0..a3ccc4e 100644 --- a/infra/main/website.tf +++ b/infra/main/website.tf @@ -1,13 +1,67 @@ resource "digitalocean_spaces_bucket" "website" { - name = "website-${random_id.suffix.hex}" + name = "website-${random_id.suffix.hex}" region = var.region } resource "digitalocean_spaces_bucket_object" "website" { for_each = fileset("${var.out_dir}/website", "*") - region = var.region + region = var.region bucket = digitalocean_spaces_bucket.website.name source = "${var.out_dir}/website/${each.value}" key = each.value etag = filemd5("${var.out_dir}/website/${each.value}") + acl = "public-read" } + +resource "tls_private_key" "website" { + algorithm = "RSA" +} + +resource "digitalocean_certificate" "website" { + name = "le-terraform-example" + type = "lets_encrypt" + domains = [ + digitalocean_domain.default.name, + format("%s%s", "www.", digitalocean_domain.default.name) + ] +} + +resource "digitalocean_cdn" "website" { + origin = digitalocean_spaces_bucket.website.bucket_domain_name + certificate_name = digitalocean_certificate.website.name + depends_on = [ + digitalocean_spaces_bucket.website + ] +} + +# ## Handle record for CDN redirect +# resource "digitalocean_record" "cdn" { +# domain = digitalocean_domain.default.name +# type = "CNAME" +# name = digitalocean_cdn.distrust_co.origin +# value = "${digitalocean_domain.default.name}." +# depends_on = [ +# digitalocean_cdn.distrust_co +# ] +# } + +# # Output the endpoint for the CDN resource +# output "fqdn" { +# value = digitalocean_cdn.distrust_co.endpoint +# } +# # +# output "cdn_origin" { +# value = digitalocean_cdn.distrust_co.origin +# } + +# # Handle record for distrust.co +# resource "digitalocean_record" "distrust_co-cdn" { +# domain = digitalocean_domain.default.name +# type = "A" +# name = "@" +# value = "143.198.235.76" +# depends_on = [ +# digitalocean_cdn.distrust_co +# ] +# } + diff --git a/keys/88823A75ECAA786B0FF38B148E401478A3FBEF72.asc b/keys/88823A75ECAA786B0FF38B148E401478A3FBEF72.asc index 4535309..e2bcceb 100644 --- a/keys/88823A75ECAA786B0FF38B148E401478A3FBEF72.asc +++ b/keys/88823A75ECAA786B0FF38B148E401478A3FBEF72.asc @@ -12,147 +12,224 @@ Uh5gKXDx3hgH33WubkQZdmM8GISEpUaD4IfCe9nw5Pv7cxB/kupnnQOsoDlcmrv7 b3QNxueZ861QRFdISKgxdn2ZqO5d9d70xZHuCfWEnckBXHJrCXSZLK7iH0f+xnTQ wms9MqetXKTaACTN03P64eXoxgXAi2X/I22S33R9Ftnu6+QEbazLjIj5iwARAQAB tC1SeWFuIEhleXdvb2QgKFJ5YW5TcXVhcmVkKSA8cnlhbkBoYXNoYmFuZy5zaD6J -AvsEEwEKAOUCGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQSIgjp1 -7Kp4aw/zixSOQBR4o/vvcgUCYNq3ukYUgAAAAAASACtwcm9vZkBtZXRhY29kZS5i -aXpodHRwczovL2dpdGxhYi5jb20vUnlhblNxdWFyZWQvZ2l0bGFiX3Byb29mXxSA -AAAAABIARHByb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vZ2lzdC5naXRodWIuY29t -L1J5YW5TcXVhcmVkLzFhMzUwYzcxNTFjZmJiY2Q4YjhmMThmYWViYjRiZDg1AAoJ -EI5AFHij++9yGTgQAJveYJ4SLctktcbxtTIVFiO8lJQoCmLu+UjlWJ6+T84LN6Cg -gepX3wU3bbJanLMN9hc0kiekoVWV+UMVcLKYMb/q+OgkCtA74efRoLzeg4XC8N6r -SSZIBOD0uXTfcJ9xiFdriSTq556iEYdVoF3ZjGX2FZWs1qn4HycoGflh3ZPuYPH0 -72HWtKrGFmdKZwXKgv83xDMDQ0zdW0BCdWAL2rTQMNyqVDh67GNcga4ACBMgK3/A -yewcyxdldZ+RHvmDhD+uvvZBJ+0wwNJVdMWjRyJxOaKza6PwRZsI9H2glvWGZQf8 -T/kPR25dURqfWD4VRJBUxQEiqjMGszK2rcFe5lujJ2j/qDM3AR4SauVFV7cUk1HD -y2r+Bu0y5DtIlP87Yj2iMNC+TqRGI1tNosmGFn7Wrlqm5A7TIxSfRJZ7nfOvyDtG -U0FxCyzfp52VTFN5asOFStoJn8rZpZPYDLhNpr025xVpEPNLVGmAsuXyHXuUIOLy -cRtukq9BnyYkdLM2r//V/QaL3PSO8ZJl1mxkbX4DBQ2NCtRpLzdppOropGSbuYqn -fsd+LLb25wAE6TCzoQFo21eP3SQwUZWNV429aIxHZgJiNRR0+HfdMv43O8TR2P8K -uCRfG0I0jNyXlnP0awvK6hJWNuxEctu8XgCYjUMibdkv4aQWDMyeimoDaHQAiQK0 -BBMBCgCeAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEiII6deyq -eGsP84sUjkAUeKP773IFAmDatRJfFIAAAAAAEgBEcHJvb2ZAbWV0YWNvZGUuYml6 +AlQEEwEKAD4WIQSIgjp17Kp4aw/zixSOQBR4o/vvcgUCYGINQgIbAwUJA8JnAAUL +CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCOQBR4o/vvcpTSEACFge0zA8PsW5sy +A62NBoKEq5/NcpFrW5Q7HRwspmLq/HUppJ0FqjmYMaIuDkkiv3+P9Yz8LSml3OZX +Eqiq7/hj7SXiSZ0AVNyluRdGGIO/nX6xVDdS+LTtizBfN2JLwGWCsfVcxpUQl1Wg +QMZusni61/zb6O1VqWB6z+Os4jGLA92HNF5yVH6tR+D1pd0xFxMXczA8xux78E4H +YpjBnf/I8Lud9QS0z6t+KH+wZE5QTinYzADyCFAed9t+38CNJrQgbm64JAE9FoEH +uEvi/wF04SMqEJ+9cmjuEyAVvULUck5SgBMRPx5MyxvBjpZkasNha0OgoBRSEQ5h +tqea7CmKfWaWV79az2E53K8vDtr2NkYe4F3iS7w8hbeItfnrsQYMAGdjjXO9Aqmg +vRWivbtwMpGqU4cx+T+d7kVwKXYMPjcDrQ4G2CaU3SEibFyxPSwc9a+5OEvHP1Rl +7G/XkG2kbA7abgcTOpO1AMpUMvF5MQMr83AzlLDEz0onxQU3RR6UFcOHLd00XX9u +eV4YTbdSQK6Kb58uDVx08hDO8rqyJqXRWRhfA4pqA+2y/hEfbSEOmPV4tcpYoqro ++kAN19oFCOsddq7WfIaqkXyPlZMA0crqC5s53va29ULHmJkMtW7nqCKPp3WucyQT +R6+eF7rw+Zhc+jkX1nNefvUriMSlcokC+wQTAQoA5QIbAwUJA8JnAAULCQgHAgYV +CgkICwIEFgIDAQIeAQIXgBYhBIiCOnXsqnhrD/OLFI5AFHij++9yBQJg2re6RhSA +AAAAABIAK3Byb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vZ2l0bGFiLmNvbS9SeWFu +U3F1YXJlZC9naXRsYWJfcHJvb2ZfFIAAAAAAEgBEcHJvb2ZAbWV0YWNvZGUuYml6 aHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vUnlhblNxdWFyZWQvMWEzNTBjNzE1MWNm -YmJjZDhiOGYxOGZhZWJiNGJkODUACgkQjkAUeKP773LKVg//bT5oqUqtwaeFddj8 -069VNRaURvJls3KmVtgqTRkiCvQMRR9wjcgRvfwrwkrg89C4Mo5evYsaEChpWnHw -x0cj4ISa0c81eE04gaTJkZ6oIv0w5xK9Um/9oRcU9/1xWj301SHNyT5H0v8sEX+P -FDrd4BfwN/wplQzX0FlKVtPtWekHI5k318TYWFBfwqssmqX7gbhV+8CqGNTwWaZD -jqMnCpRMq7SY41kTAl+WQ9PY4VVSPL2tVFJsbIX6Jd8mqcRsJJ3a19qpyByW1cMC -a68a9ot4zJ6ePhKKSufHqUsdHfdb6hrLYiSQpejxweVybYcshWY+Q7LA8hT53+2N -UaL7F3KAVOky1BepNY5PVfrenNA/T0G+b1CU6ayDh5KgsycBrH5ciYi41oo5NJFD -eVw7FKfkansHiK/uaNBSNxyzhhOnGr0RVDc1zx0ywXQxVivEzx9yCfVnR5AFpMzw -87mKJFUfBwlUMoK58ypvorn691KTi77UiiNIXW36XgI9nzShMD6Cv10vwJI2qGzL -ocGAdcEv2Yl+5Qa1sVC2Cs3Qqdaj06g+SB59lDMNZJiO40nfP4LWKLB39nCrpHOb -hQjFI9JS2xyRqTlAkZ6QG2q8qWNIXh9xZNZwzVsLCn1/ocR0IEi5f0zv2AV3BAmE -p1qx5QD2c308sG3hUeZVu5/0IWqJAlQEEwEKAD4WIQSIgjp17Kp4aw/zixSOQBR4 -o/vvcgUCYGINQgIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCO -QBR4o/vvcpTSEACFge0zA8PsW5syA62NBoKEq5/NcpFrW5Q7HRwspmLq/HUppJ0F -qjmYMaIuDkkiv3+P9Yz8LSml3OZXEqiq7/hj7SXiSZ0AVNyluRdGGIO/nX6xVDdS -+LTtizBfN2JLwGWCsfVcxpUQl1WgQMZusni61/zb6O1VqWB6z+Os4jGLA92HNF5y -VH6tR+D1pd0xFxMXczA8xux78E4HYpjBnf/I8Lud9QS0z6t+KH+wZE5QTinYzADy -CFAed9t+38CNJrQgbm64JAE9FoEHuEvi/wF04SMqEJ+9cmjuEyAVvULUck5SgBMR -Px5MyxvBjpZkasNha0OgoBRSEQ5htqea7CmKfWaWV79az2E53K8vDtr2NkYe4F3i -S7w8hbeItfnrsQYMAGdjjXO9AqmgvRWivbtwMpGqU4cx+T+d7kVwKXYMPjcDrQ4G -2CaU3SEibFyxPSwc9a+5OEvHP1Rl7G/XkG2kbA7abgcTOpO1AMpUMvF5MQMr83Az -lLDEz0onxQU3RR6UFcOHLd00XX9ueV4YTbdSQK6Kb58uDVx08hDO8rqyJqXRWRhf -A4pqA+2y/hEfbSEOmPV4tcpYoqro+kAN19oFCOsddq7WfIaqkXyPlZMA0crqC5s5 -3va29ULHmJkMtW7nqCKPp3WucyQTR6+eF7rw+Zhc+jkX1nNefvUriMSlcrQfUnlh -biBIZXl3b29kIDxyeWFuQGRpc3RydXN0LmNvPokCVAQTAQoAPhYhBIiCOnXsqnhr -D/OLFI5AFHij++9yBQJjzryqAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4B -AheAAAoJEI5AFHij++9yooEP/3OcUCJvtyliEy6a1aR4CEv1H/kd2zGRApBkSdLp -ffdw76xdzF258uqzi6nt8B5AUtp5c4LH6VxmfwIgzGOSN9/vE2XhCOvPqorum3wp -nQoR0Q4B/w9T2c0NJWFOq9RVt2LKmHTBakq2rf5h6fQkp8bVmyklL48kcFPcN1rW -vjgtmFsMrEoSLDO4vZpZL/KoMBsmTR5kPCxPGEWf5T8vWGjA0y6dTzcjRnSzfTqG -JdkA+DRuBXlcCgfj+wjXKiknkm1MgdD79kkfYUIW5t50HM5oR02fBVeOzA03baAs -AHidIyz3/7BmzuKISLb479wjCNui768Dz/8A7KEUzwRik1EwXHlzrWPX8eIMEquB -I+NLFcnQD1g0LmMDt1rId+g6ZlSpAFqlCX9yBxyPjCKxkcqzvDJn6FFZEme87FIK -4H6rwpewlC6himXmAlhP5hbEmTIyaMLV/F8t5q5frQ6XrNSi+660IqY1NezZnN47 -Y42jmwviL3M9TXcmju1fBzZ/f7LECiv1PLVi+HtM4pKo+JOTP+p3n0Oul7h8pABh -X2nCLG6FPT5jp40gtkraTNmKec9SUFDC+ANAh7crNlpsxI5oXQj+120Qds3/5snu -3I5k2SB4cVmmIrwZCzP/eFEZsuhOabyD+tf0wNsPLkzMtYQrbqeL++4po8aVucRL -lcUatBJtZUByeWFuc3F1YXJlZC5wdWKJAogEEwEKAHICGwMFCQPCZwAFCwkIBwIG -FQoJCAsCBBYCAwECHgECF4AWIQSIgjp17Kp4aw/zixSOQBR4o/vvcgUCY2mBDTMU -gAAAAAASABhwcm9vZkBtZXRhY29kZS5iaXpodHRwczovL3RpbGRlLnpvbmUvQHJ5 -YW4ACgkQjkAUeKP773LaLA/+IBuSDULCo6lF7xEO30FSDKAo9N1PuNm/9NrGl4zg -3CWN+NeFJCol4z1o11OTvkc3/noP9atUeJvXoKvCZXyz0sXUiK3+I3CXynino2pl -Q2HasK0y3wjdVOP9nFKCZfocP/jbiK0ijEURwkK0mxyzj/DVtJqa6/AaIYX2PfZL -YGH1TPCEsunN0QDeDJCdkSojG/hzOEKeWFMcu0VM8lsDVYKy646qoHxXn7yOsVA8 -dgAUBpGfroHPFQFdCqeoZQ9G77G0j0VyEwkIx5W6nE7EsVkaHyl2GxjqTNf4Edwj -KllT+nbKOU4lFaCEuZSUmvUE5+uWhoYWIL7zoz1BjnoiKYYL0H+GXqqcuChJIpH/ -qI5VGiVZwwbEs0sSLO57dt1HXHRWTQNHnbYvCN1cQpVCu1hEN/rQeNp/AGrZMcDy -xpKZKcO819s8JAkrPV49Gcn7TmGSA1jSZZjpszC0IOYD6JnxvWYEJI37arOWFce6 -7JdUlXxb5r7JMnjb6V4kY8DSH2sQt6NbsM2BK9uceLofw0SHfwoDDri+5wUKQN7H -fw3xil9WPfllgSru3YiMacS/KsbXhAFe3aCI/guyNdvjiZ/HSF+rrXgDZ3S5wTzX -OPLMURlw/JEqBhrREa5P4gA3HhN+3VzNemLcEYpdsVW5U/TaRTc+U4bOB3aWAp7Q -37CJAlQEEwEKAD4WIQSIgjp17Kp4aw/zixSOQBR4o/vvcgUCYXcvmAIbAwUJA8Jn -AAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCOQBR4o/vvctc2D/9oOSD0cB+g -9I0AeRTlPwCYyZTAWJ4HJItVHdPN2cs+6VUV7z7l9nvHyOvrRK2Jax18MjCthYAN -wIYAQaMbynAK0dazxBo1PbtV/24D4RzgnZ49lXCvHeuvtkNuMgblxGLlZViQsovQ -F12v86vAjfx/ngqHlh1bh59nvTe9btmkN7jUHyEGXbS4tLLZ4kFn2XViUZ45imbc -qInYnAt0FoHpQPrA141EJUBYN/X0XzrqfHnLwKGTamni9d8ftT3+FXi37YdraPGK -lIYCuHMfHjYbrkIwjeX7Fg9nn6OmAqIknaZhmhMbi0rhV1Nd5dLwHrHdseEu5BnN -FyNOPrvPk2nVy40TrAjghId0Aj9+MgO6SeWcs/lHtNjUagrHjeNAoLqLKbwVXaN+ -kNM5Jf3m9PH90kpCv8yDecFHsNRmgS++BNci3b0vf5kB8IHT2xCSybMxkro13wrM -mexOIomdsbAyLKDiHhqD3ZnIeGF4d5MLh5O0NlVGQ36QoSg9ecb9zuCyUKfBQ9Dp -TIRHV8EX8Wl3mJML+VzIPpNG0lFFh27NbjLHQuJtV5+f6fUHsTUV2xsBlYTVnJ9+ -i7N+iVwK8FEIvSytm8saFjVIZhE28Z5AFl9akfqZV2Pc2ltQSWRYGttIVfhIxhBO -x8uGpNQKuja2JXp5C+PU2D8ghv536YkvJLQUdmFuZG9yMjAxMkBnbWFpbC5jb22J -AlQEEwEKAD4WIQSIgjp17Kp4aw/zixSOQBR4o/vvcgUCYXcvpwIbAwUJA8JnAAUL -CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCOQBR4o/vvck2SD/4+KVHpeXVRndfi -UALzrV+rv2PW4EtTfftIalXWNn/aO137ifzXoKfGyJNev5LXILUQe0iXSo2Tkz52 -Y6gecVxvxH5WS1hSn4q8EQHrdaTjKiOBqOPczt2PeloOrfoQjBDVWD9+FXkPbZje -C95HLHMcDlxaN7EmGnts4HR1vMJSze7lH3829NUfwU5Bu6iDzlE7oUlNCAbdPWrm -Vq3/VmPQvhzwTjKRM9qLGEL55zeVewm717FLhdzMmmCk8od26A/Y8UMAbldzGgDO -ZMjx+15xEr0ksmb6p0ez3sYVEMOpSvGKyBqWA3vIlCk6geKYZsrXi15lOBfVtSFP -AOOjDGFi8oZ3T9ROotCBNVZemLVNU+dltyK1UHFXjipsYuCAo9Hdil/ANlcSomfB -KGnv/zvBLtcKb7r0cT+Ifj1g920fxs1dSSSRWnx11XmV4x1CZ1HdCZUA5P1kGl/t -qSEurBRX4IY5sd2w6SkRpU0h4oKxgDj03NjXszcHCoMhvviv7W1bKcoweJWZufg7 -JYEilKrbf8IyPCNsk67pQsG8uheMlbpjFOYttjyZvUd2E+9CvjzhNs7AQrQjvHv8 -81LH34/TnHf1JEpoH1TjWRCSbkHG2vm1MyXwadZggNp1sf9o2+YTSmiVmTixuXaM -SNi94ZfIrqdAHR9sf27SORjMT1lYZbkCDQRgYg2AARAAlSVCigfgHH460EcdWCZA -gkX2XPV9HOllWhATV6U/sgLVquh9e3vnPcAfLGqimgyVlXmRkQs/4olGSPenap2d -CNZH0f1au52NUT9W2Zp+EwPcWoLTzFNnNojGIXyDbOWXTx4jY1MJKc2r2P0FEP97 -xudOU26wcnAhiYR01H/+eEMwoV340Oo9kSPQXHZQYu2+kbMyhld8WG49NjVAVVcb -OMyCIrWqd/+gQFWVYT96IVuYK4EpK6eX3BWyj3M0n+jzX6BvjvawNFfnhVnzh4Dk -heb48oZsrrrcYNraXpXf6SpNEmb59O7yNAtgg8th8bp25Ce+gSy+7SzdpA6h1/JJ -FNBZuzG7bJXree4K/2zEz7YO4TjWdCApUMzWEk3g8px16TqOP6GWzmuSdJouCpkv -cYM/ZmleBjJ8kJ30A7iygREUHC4sIPW3gREIxCjgaKKVIJC26TnXyg/Z1qrfzNu2 -32WUn8/YUH+yg1dTh2R48spfw8ms5ZyLrq9AUJ1JgwarIp0FqDZKfgPCH+piwlor -X6C88PKLzF+3YyQ049o3e/NWlhrWEUYaMlG0bpm6YaZxnHMN1LbqMPRxyes/DIRe -WYT503YfG/b6rdnSY7zAaGlacqjiOtYvFTaMsHVGIA9CKIFMAKrUq8LpDLqqAmJE -8s4uQAAhHrPDFjkJHg4xJbsAEQEAAYkCPAQYAQoAJhYhBIiCOnXsqnhrD/OLFI5A -FHij++9yBQJgYg2AAhsgBQkDwmcAAAoJEI5AFHij++9yShUQAILtTAJRB+gPr94z -h0s4jxPayAVyU39Oer7G8e2nD8dn0QpGCrH38hfq88NMIotdoSubrGjWcXbxITxE -Oq7HK9IOGwisqX53IPHz9Ja+JxWjaKq/D1sy4weheaiE6JzMaRMu5C8NFeMOh/7I -BjDyqI/7QIa/C7kdzyVketDObxlCRvvH3FNzDvDgSrbZSfac2H/K684YnrqfXjNF -goiE5YAC2m59dJsEawxdHYM10azjrvRec0db35Oxgx8ZlnSFj3TRamY+FdN8OPII -G84BR6rIrlNNk/mz1sizfWBlcrBInfB0Sx6OzFB5kwO24prM+xgHiRvDu7qGRyZH -Ds3gFBVD6zkwZUSWE0FEQl1S0k0WkUuOoAC86be+jx67IR9GuslU4UpuaRbr6SHt -c7VSOOjzobbNBfzkvNE+tdZHgvsVry+GZlUFJRpc8CgG+v6A/SGXm1UFkEkorhlA -ph7TZicKobaY23bU2GgT3AYXvOXzdDQ5cMaBXRpUj081Uv3cdCXXxtng4T73lquR -LhYLeLu6BaZwf/62sFUczz2lC3P/scfNCpSL1HdMu4JB9JjIG4NuLDFobJvEtc4j -3H7fw0xec2iDuLE+TyC8BZWZjmRplY5XkPgQpxMBUyM2E7bgh7wwq3bRedqM95d8 -tN/s/0uQ+DLqyHvunDR/T+AJbkdsuQINBGBiDWQBEADwflgNR4RdZlNmPq9x+PMg -OfBPlwIop4rSCr2vnM+YCtiaRLkFYllJ+O2BA/U56vOw0tkwjs2d9zCfLmis/I8k -ntj5/axWMGOz+8+/+f4a71XFaa1sdli6en/ddlsIea+NvPAEPNs9RjTmtTI5+baB -9jB19gflH4JtaD0VUALo47+mYhb/ZvcEg3GmD+3McoJkm9ixE3LkXwV6bIraetZt -bhpIpq7BweVZ+R+jKFs+wh4JWdEYEQ2Jw3gBAD8NKMMq/UV7G+EGUtGSgWWbSjgK -ZKs1pnAGfbOU4+DhUY4aO9wYRbCjM34jg82taK09+4ra7rUiyh66QoyqrjGgPVbs -+vDnKykb3x7qAPUdZgvSMgIYGFjlpTfSQ/HsuVvKWwX0RoMj7GdS941hFKgm3g6W -OForxL5wgJGrE+5RlPA4DqtcSIEBngycxrNUgNKRAK+cE1+awoOxklpeFNPJRKPj -1k2sjWGnWowmKwiZ79pzkmbjf7xMJkX4l93sdEwtNnhlpicrInEH/3bgWf0ebQUC -Tk7sDjw24E4HSeD+V+amfqrmDM2i/meOU/l/UC56/rw4VXu4Hv9SLl60tAYvpkgy -gX5SDezAzon/AWM+PsfsidYvOTeoMOq/hecE1HmQbSW5s6nviMhi/aWXCnsvJW1h -9OtPF4sDA4BoKxfo+osFewARAQABiQI8BBgBCgAmFiEEiII6deyqeGsP84sUjkAU -eKP773IFAmBiDWQCGwwFCQPCZwAACgkQjkAUeKP773K78A/+IOct0Ak+2TDMR5o6 -2qAbB+HH9Miwfsp83eWbcmP1W8DQniN1os37eRYdBUoX40PmR1s+0H5Oy1caKP+N -Hr2TCpg/I6RHO17r8b6kivG8xhHZ3kp9nqbFF5l8P/i87Yvt1XizdhpyOxQDPSFV -HFjEowuXC5WlcuTtSmqh86NguSQemee1XY/kcc5PHee8mNUog/7NdpaC4uOe7Ahd -7P5EVM3Aw9NGib2kJnUWQ2m8+dqjQbjQOwD6YYAO2csi13I5HLt4ETxcs+Prpb0p -jSsoygeCjmN0T2xo0GIXH6MBhFg709pzlq3nkH9dr8ECSTGuqdU+HAXtSE+bF4Rr -jcP5JYeHBn3SsmcvrMa6rNSlABeCLdZOegsro93g9gjgZM2DD96DvBi3erAaxRsz -Ho9ZWv4clYN2pLEldvlA3149tmDEOo3TOu3BhnDSSmrtW4ijBfIEgwpcxxM0MviJ -ucdboxizTcOVRdTungbYtOb5IH7c4I+7b9hRLJQqfh5Q2d/uiKKTR1YfMzBViPYY -DR+3dMBl6b3DkFpiFbep4oWrZqiGMgirfeUogM3z0N1NpydFOB4d5jXggvyfv9Si -AMNYIHOv8/ApBmM4GMb1V8tllxsTUkJmSFJ5lAUtfywA6KB/fRJWzD/2KwKkutuo -lq0P6+I8ZF6JNQK2x14MtYO6l1s= -=3zk9 +YmJjZDhiOGYxOGZhZWJiNGJkODUACgkQjkAUeKP773IZOBAAm95gnhIty2S1xvG1 +MhUWI7yUlCgKYu75SOVYnr5Pzgs3oKCB6lffBTdtslqcsw32FzSSJ6ShVZX5QxVw +spgxv+r46CQK0Dvh59GgvN6DhcLw3qtJJkgE4PS5dN9wn3GIV2uJJOrnnqIRh1Wg +XdmMZfYVlazWqfgfJygZ+WHdk+5g8fTvYda0qsYWZ0pnBcqC/zfEMwNDTN1bQEJ1 +YAvatNAw3KpUOHrsY1yBrgAIEyArf8DJ7BzLF2V1n5Ee+YOEP66+9kEn7TDA0lV0 +xaNHInE5orNro/BFmwj0faCW9YZlB/xP+Q9Hbl1RGp9YPhVEkFTFASKqMwazMrat +wV7mW6MnaP+oMzcBHhJq5UVXtxSTUcPLav4G7TLkO0iU/ztiPaIw0L5OpEYjW02i +yYYWftauWqbkDtMjFJ9Elnud86/IO0ZTQXELLN+nnZVMU3lqw4VK2gmfytmlk9gM +uE2mvTbnFWkQ80tUaYCy5fIde5Qg4vJxG26Sr0GfJiR0szav/9X9Bovc9I7xkmXW +bGRtfgMFDY0K1GkvN2mk6uikZJu5iqd+x34stvbnAATpMLOhAWjbV4/dJDBRlY1X +jb1ojEdmAmI1FHT4d90y/jc7xNHY/wq4JF8bQjSM3JeWc/RrC8rqElY27ERy27xe +AJiNQyJt2S/hpBYMzJ6KagNodACJArQEEwEKAJ4CGwMFCQPCZwAFCwkIBwIGFQoJ +CAsCBBYCAwECHgECF4AWIQSIgjp17Kp4aw/zixSOQBR4o/vvcgUCYNq1El8UgAAA +AAASAERwcm9vZkBtZXRhY29kZS5iaXpodHRwczovL2dpc3QuZ2l0aHViLmNvbS9S +eWFuU3F1YXJlZC8xYTM1MGM3MTUxY2ZiYmNkOGI4ZjE4ZmFlYmI0YmQ4NQAKCRCO +QBR4o/vvcspWD/9tPmipSq3Bp4V12PzTr1U1FpRG8mWzcqZW2CpNGSIK9AxFH3CN +yBG9/CvCSuDz0Lgyjl69ixoQKGlacfDHRyPghJrRzzV4TTiBpMmRnqgi/TDnEr1S +b/2hFxT3/XFaPfTVIc3JPkfS/ywRf48UOt3gF/A3/CmVDNfQWUpW0+1Z6QcjmTfX +xNhYUF/CqyyapfuBuFX7wKoY1PBZpkOOoycKlEyrtJjjWRMCX5ZD09jhVVI8va1U +Umxshfol3yapxGwkndrX2qnIHJbVwwJrrxr2i3jMnp4+EopK58epSx0d91vqGsti +JJCl6PHB5XJthyyFZj5DssDyFPnf7Y1RovsXcoBU6TLUF6k1jk9V+t6c0D9PQb5v +UJTprIOHkqCzJwGsflyJiLjWijk0kUN5XDsUp+RqeweIr+5o0FI3HLOGE6cavRFU +NzXPHTLBdDFWK8TPH3IJ9WdHkAWkzPDzuYokVR8HCVQygrnzKm+iufr3UpOLvtSK +I0hdbfpeAj2fNKEwPoK/XS/AkjaobMuhwYB1wS/ZiX7lBrWxULYKzdCp1qPTqD5I +Hn2UMw1kmI7jSd8/gtYosHf2cKukc5uFCMUj0lLbHJGpOUCRnpAbarypY0heH3Fk +1nDNWwsKfX+hxHQgSLl/TO/YBXcECYSnWrHlAPZzfTywbeFR5lW7n/QhaokC+wQT +AQoA5QIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgEYUgAAAAAASACtwcm9vZkBt +ZXRhY29kZS5iaXpodHRwczovL2dpdGxhYi5jb20vUnlhblNxdWFyZWQvZ2l0bGFi +X3Byb29mXxSAAAAAABIARHByb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vZ2lzdC5n +aXRodWIuY29tL1J5YW5TcXVhcmVkLzFhMzUwYzcxNTFjZmJiY2Q4YjhmMThmYWVi +YjRiZDg1FiEEiII6deyqeGsP84sUjkAUeKP773IFAmQnALgFCQeHWm8ACgkQjkAU +eKP773Icog/8CFZpGlht/SAsWv3CPGotYVenSgZ4+j49tqyTA057bx1ihuzDVsjO +Epx9YoS0WUHd1oeWHWw4gZlNnYed9dYvUQLtbivTZ51eX6cCX4K82/CgX7sBKNQE +bpnLhifucye8YNJDKTcieB6RWo+wzTW++KiVXFwr51wQT1maq0/VJQnHZKKmyDgh +qHDT7qeTiu+kJ+l+cC5+inE038P74jq3PhQh6y06HR4qncgqEVaJqtVc8OyQalJn +yrUVcK+lZ3MW9sufFhVDL+z5WaIAZxIo2hVK4ZjmjTYZhD0EY2OoHPh5k3sfNJ85 +2eHYnRRzltNyYkSweP+oeWIH3kzGg1WlAUCnE2axFiqSDp2b8KxDZ8JTyiZyOUf2 +A06SoGTONGAQ792hbdP4kzwl42ICHL06efFImrO+13yKLmH15CAs7TPtGW6+PZWb +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 +=y7aU -----END PGP PUBLIC KEY BLOCK----- diff --git a/secrets/credentials.tfvars.gpg b/secrets/credentials.tfvars.gpg deleted file mode 100644 index 3e9e0f5..0000000 --- a/secrets/credentials.tfvars.gpg +++ /dev/null @@ -1,33 +0,0 @@ ------BEGIN PGP MESSAGE----- - -hQIMA82rPM2mSf/aARAAiUgRJFslwItgpf8xx26wn58bvcdXQ5YlBqO/lnvcYUIz -0FF+uAgihSdgbkh80q+nraJ0uvlTGeSTv2adVYa3e4CTKkXVbbxPZgAY6cz2GnvL -mzhUR4Zely9GltyL9ebtGvCorC1GyaRH+2Bz8tFS35gdYEEhg2A17kHibu1du+a/ -qYs7OAnJwLFKfEZ0GymGozkGh67jktHWVKd14R5b494j++VDnDmVHRuXyBIsMhH8 -JvNzBPCnEjqY1nFKF+ABPU3UazMZ4GQTFOqQroK051jyMyWr9fNJ651BrNcvuBSa -gNfTLSHC+roSlde9NKWBWX907lxiuSa4R08vQ4WOWnNVM4rZ+O6fSzAmljvxxIu2 -x/xXc3ADE+JS5nYGwTWBiaMMBUTixuFEraf2riUeZkCL9swF5X8U63UohRDnNGYl -fvBtlJubtBWLTfp6gN7FSN0xtwBhxOIcZs7izlqp3RMH8E90GaVpdRbJmhcdMCYz -FTynWgOR/eYiEMV7IAELfW857KBu876luV/r17HZLVI6ntYSCOMhMUy3VbPQnyOV -ipY2yoIiPM9lIz22bf7W5gAxAlzreiluDXKu7IaKpd5YZHnMF131BHtIxporBurS -6cK3ZhTJ0htqJCylegzsWAkzuM4iTYx6CQZmEEEgdnAR/q2yePEGeaTFuufrNfWE -XgOv8yOQ7O65ERIBB0DRnOtjEkhPUCDHnb9geE9UZojugyYtU+tkROWfMAKleTCq -z+wpiOCtytt8PC055aR2aFIUNLwmClMfd62hu/IIYIvudoCKwUPfe1mwjTyfKzaF -AgwDlZ/4XIn7MUkBD/9KBXl5pMEWMZG4VPjMAhQu+blK5RzoefO8q7eGiAVB5OXp -AgsAvDjQlmBJ09J2YPUtHRiGwA6CfPHmTiF5n2/TzTkBX8tJbTwZi0mL8gB5PYsf -yPWDMDYj91pJPUB+eV8OIrzB8DI4PgwPzuCFiNymnmC37MBhh66xvVaTBn46OCwm -7cRfCrixoFPwi1wWqQ9ttZ9BSpxIqj1bkgYhuBCsfN4s2hVRVOib8y4jBgn0dmWD -ofuJ1fwPDUznixI2tefVSssBcltZprcVBedteZDdbxurMKWjMpsj5OPN69egzx6o -jhAazD/5d+kiHTMNDnJmIQWtyqU7MfJHNTHvCpvGy0Lryy9NtMbkUWYxkNSh3pMk -qBkM90vWItvrbPtLT3KeLRzWs+mPQoQiEjyetEli24oX6jul5BtHRR2KWoit5I/7 -nK2dftI253cI5IweUFN3KTVVw5sIVW6tYYcjVU7ps/pX9EEDYcqcEvnY5xBnxvrJ -tzPIEInyK0LLd5DrwVzglb/r/qAt/k+gpgJ/suG4DyAFWSTWaszU4HD/IV5WJZMh -qEDjnnbRlIbce22GtgdlIjIF7DSRPNHDt3k/qfFcaeHZstRe917zK9TuYs8e4cer -X8JvbFy1j290vDL8QfSi//X5t3F6n6oMz38HFHI9dRtcVrVBNPkYYRf9fESE7tLA -KQHFak+gyMYJSKNbqsTYupXNdSzNqOD+J0uH68jQw4p4NEKiuA6UWGgx1d9cIoTc -Zd9/KR7Nef4UTbi0jN7VqCdEfWLsQfi2Ee0Ne6rPPKzLA6KRBGTM7AhQu1o1i3zW -fpGBuPKQAye0uPbcW4rWKRBlijX/AMrMYfGhWiHrASzCMQi5zItaVGiZDB4EXGgQ -+TOsvrbLix/oEh/vQoJFKZLbXVPXyjSXFNGn+OVt0AGGR+tIZooqYBByvkN7F5Ev -kbqVKT5QuHLhGDVayOq7yvZBOmuXiNwFWFxnuP7YYbm0y/KYJ0BM2VEK -=2pQ7 ------END PGP MESSAGE----- diff --git a/secrets/production.env.gpg b/secrets/production.env.gpg new file mode 100644 index 0000000..b4dadaa --- /dev/null +++ b/secrets/production.env.gpg @@ -0,0 +1,45 @@ +-----BEGIN PGP MESSAGE----- + +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 +hiECWQ== +=2Gks +-----END PGP MESSAGE-----