infra/docs/dns.md
teutat3s 7910f61dd5
Some checks failed
Flake checks / Check (pull_request) Failing after 14m46s
dns: switch to opentofu + terraform-backend-git,
use opentofu encrypted state feature

https://opentofu.org/docs/language/state/encryption/#new-project
2024-09-10 10:49:13 +02:00

1.5 KiB

Changing DNS entries

Our current DNS provider is namecheap. We use OpenTofu to declaratively manage our pub.solar DNS records.

Initial setup

You will need to setup the following namecheap API credentials, look for "namecheap API key" in the pub.solar Keepass database.

NAMECHEAP_API_KEY
NAMECHEAP_API_USER
NAMECHEAP_USER_NAME

You will probably also need to add your external IP to the API allow list.

dig -4 ip @dns.toys

Now, change into the terraform directory and initialize the terraform providers. To decrypt existing state, search for "terraform state passphrase" in the pub.solar Keepass database.

cd terraform
export TF_VAR_state_passphrase=$(secret-tool lookup pub.solar terraform-state-passphrase-dns)

alias tofu="terraform-backend-git --access-logs --tf tofu git terraform"
tofu init

Make your changes, e.g. in dns.tf.

$EDITOR dns.tf

Plan your changes using:

tofu plan -out pub-solar-infra.plan

After verification, apply your changes with:

tofu apply "pub-solar-infra.plan"

We use terraform-backend-git remote backend with opentofu state encryption for collaboration.

Namecheap Terraform provider docs: