aboutsummaryrefslogtreecommitdiff
path: root/secrets (unfollow)
Commit message (Collapse)AuthorFilesLines
2019-06-13Specify email address when rotating keysEuAndreh1-0/+0
2019-06-10Remove call to =cd= in envrc filesEuAndreh1-0/+0
2019-06-10Output all generated files on ./generated/, refactor .envrc variablesEuAndreh2-0/+0
2019-06-10Re enable $DESTROY_VOLUME toggleEuAndreh1-0/+0
2019-06-10Import GPG key before provisioningEuAndreh1-0/+0
2019-06-10Encrypt attached logEuAndreh1-0/+0
2019-06-10Send logs via email after finishing provision.shEuAndreh1-0/+0
The email will be send for both sucessfull and failed runs.
2019-06-10Disable $DESTROY_VOLUME operational toggleEuAndreh1-0/+0
2019-06-10Change SSH portEuAndreh1-0/+0
2019-06-10Provision DNS entries using DigitalOcean instead of DNS registrarEuAndreh1-0/+0
This way we can implement dynamic (provision-time) Floating IP, instead of a hardcoded pre-created Floating IP address. Related changes: - remove =terraform-godaddy= provider, use =digitalocean_record= instead; - create =generated-known-hosts= after provisioning instead of during =setup.sh=: use the =$(terraform output public_floating_ip)= value to make this file dynamic; - remote the =$PINNED_IP= and =$TF_VAR_floating_ip= variables; - add type and descriptions to variable declarations in Terraform recipe.
2019-06-09Change $TLDEuAndreh1-0/+0
2019-06-09Rotate DNS registrar keysEuAndreh1-0/+0
2019-06-09Use same NIX_PATH locally and on the CIEuAndreh1-0/+0
2019-06-08Use terraform-godaddy and Terraform 0.11EuAndreh1-0/+0
The =terraform-godaddy= package supports only Terraform 0.11 as of now. It is not packaged by default by nixpkgs, and the =postInstall= hook is required because Terraform looks for providers usinthe the =terraform-provider-$name= template, which the package doesn't follow. I had to remove the loop on vps.tf since it requires Terraform 0.12. I'll either wait for =terraform-godaddy= to upgrade to 0.12 or try to do it myself if it bothers me enough.
2019-06-08Add credentials for manipulating DNS entries.EuAndreh1-0/+0
2019-06-08Generate UserKnownHostsFile dynamically instead of when rotating keysEuAndreh1-0/+0
The previous solution would hardcode the server IP. This way we can change the server IP address that is hosting everything and keep the SSH keypair. Previously changing the IP address would require either calling the =./rotate-ssh-keys.sh= script or manually changing the IP address on the known-hosts.txt file. The IP address being duplicated itself was a code smell. Both SSH keypair and IP address can now be changed independently.
2019-06-08Use nextcloud.${TLD} instead of cloud.${TLD} as CNAME for Nextcloud installationEuAndreh1-0/+0
2019-06-06Add ${DESTROY_VOLUME} operational toggleEuAndreh1-0/+0
This way I can dynamically control whether to destroy and recreate all the existing infrastructure entirely from scratch. The advantages of doing so are: - test the non-existence of local state on every deployment; - make sure I can always recreate everything from scratch. The disadvantages are: - slower deployment times; - longer downtime during deployments.
2019-06-05Script: rotate SSH keysEuAndreh5-0/+0
2019-06-05Script: rotate SSH keysEuAndreh5-0/+0
2019-06-05Script: rotate SSH keysEuAndreh5-0/+0
2019-06-05Fix git-crypt configurationEuAndreh9-0/+0
2019-06-05Add ./secrets/borg/meta.txtEuAndreh1-0/+2
2019-06-05Use specific known keys for connecting with the backup serverEuAndreh3-0/+2
2019-06-05Use non-standard port for SSHEuAndreh1-0/+0
2019-06-05Use known-hosts.txt with public key from the rotated SSH key pairEuAndreh1-0/+1
2019-06-05Use Ansible instead of Bash for provisioningEuAndreh12-0/+150
The deployment is not quite working, and I'm unable to test right now: DigitalOcean is returning 503 for my requests. As of this commit, I can run =ansible-playbook provider.yml= more than once and it will actually be idempotent. Notes: - SSH fingerprint are now taken from the public key file instead of manually supplying it in the terraform template using the =digitalocean_ssh_key= resource; - use Ansible instead of ad-hoc Bash scripts for provisioning the Droplets created by Terraform; - use the =filename.env.extension= to create the concrete files in CI; - use the =user_data= to add the know SSH key pair to the newly created Droplet; - add =rotate-ssh-keys.sh= utils;
2019-05-28Use Floating IP on DropletEuAndreh1-0/+0
2019-05-28Remove git rev-parse from .envrcEuAndreh1-0/+0
2019-05-28Rotate secretsEuAndreh1-0/+0
2019-05-28Split Bash variable declaration from assignment (shellcheck offense)EuAndreh1-0/+0
2019-05-28Add backup routing before possibly tearing down machineEuAndreh1-0/+0
Create a new backup entry before running =terraform apply=, which may (or may not) destroy the current machine. This shouldn't be an issue for the backup itself, since all of the data should be stored in a separate Block Storage Volume, but we can take advantage of the sevices already needing to be taken down in order to perform a full backup of the data.
2019-05-28Add secrets/borg_remote{.pub} SSH keypairEuAndreh2-0/+0
2019-05-28Rename ./secrets/id_rsa{.pub} -> ./secrets/vps_box{.pub}EuAndreh2-0/+0
2019-05-27Add variables to properly tag a backupEuAndreh1-0/+0
2019-05-27Add Nextcloud recipe to docker-compose.yamlEuAndreh1-0/+0
2019-05-27Use Bash variables for domain names and container portsEuAndreh1-0/+0
2019-05-26Use more robust Bash cd approachEuAndreh1-0/+0
2019-05-26Automate provisioning and deployment of VPSEuAndreh2-0/+0
In order to perform that I had to remove Terraform's =.tfstate= files from the repository. Terraform does support "backends" for storing the state files, but I settled for storing it on a separate repo (vps-state). For now it solves the state management problem: - it has history of states; - all state files are GPG encrypted; - there's no coordination however, but only the CI should perform a deploy in order to avoid race conditions. I had to add GPG and SSH keys to sr.ht to achieve that: - SSH public key to my profile to authorize it to push to vps-state repo; - SSH private key to the secret builds.sr.ht environment to enable push to the repository from the pipeline; - GPG public key to git-crypt to make it possible for the pipeline to unlock the encrypted content; - GPG private key to the secret builds.sr.ht environment to enable decrypting git-crypt content from the pipeline. In order to avoid divergent environment from local and CI, the ./provision.sh script is ran through nix-shell.
2019-05-25Update .tfstate filesEuAndreh2-0/+0
2019-05-25Restart docker-compose after deploymentEuAndreh1-0/+0
2019-05-25Check-in Terraform .tfstate files using git-cryptEuAndreh2-0/+0
2019-05-25Don't use pub_key and pvt_key as input variablesEuAndreh2-0/+0
Embed SSH keypair directly into git-crypt.
2019-05-25Remove docker-compose.yml from git-cryptEuAndreh2-0/+0
2019-05-25Add simple DigitalOcean droplet skeleton for TerraformEuAndreh1-0/+0
2019-05-25Use specific folder for volumesEuAndreh1-0/+0
2019-05-25Start docker-compose.yml skeleton with WallabagEuAndreh2-0/+0
2019-05-25Remove existing NixOps configurationEuAndreh1-0/+0
2019-05-25Test nixcloud-webservicesEuAndreh1-0/+0
2019-05-25Add simple stub VM definitionEuAndreh2-0/+0