chore: add encryption tools

This commit is contained in:
Alexander Navarro 2025-01-20 16:08:31 -03:00
parent 6e72e0ccff
commit f77175307f
6 changed files with 72 additions and 15 deletions

4
.ageboxreg.yml Normal file
View file

@ -0,0 +1,4 @@
file_ids:
- .env
- roles/common/files/robo_key
version: "1"

32
.devfiles/justfile Normal file
View file

@ -0,0 +1,32 @@
set dotenv-load := true
export AGEBOX_DEBUG := "0"
export AGEBOX_PUBLIC_KEYS := source_dir() + "/public_keys.txt"
fetch-deps:
.devfiles/scripts/fetch_gh_release.sh "slok/agebox" "agebox-linux-amd64" "agebox"
# Easy and simple file repository encryption tool based on Age.
agebox +ARGS="--help":
@.devfiles/bin/agebox {{ ARGS }}
# Encrypt the provided files, relative to project root.
encrypt +FILES: (agebox "encrypt " + FILES)
# Encrypt all the tracked files.
encrypt-all: (agebox "encrypt --all")
# Decrypt the provided files, relative to project root.
decrypt +FILES: (agebox "decrypt " + FILES)
# Decrypt all the tracked files.
decrypt-all: (agebox "decrypt --all --force")
# Reencrypt all the tracked files with the new public keys.
reencrypt: (agebox "reencrypt")
# Show the content of an encrypted file to stdout.
peek +FILES: (agebox "cat " + FILES)
# Validate that all tracked files are encrypted.
check:(agebox "validate --no-decrypt ")

View file

@ -0,0 +1,2 @@
# anavarro
age1gj7hj894l0a0lvu3fsndlkdkyc0da7963kcqhpfe43reflx3gafqnm058u

View file

@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euxo pipefail
basedir=".devfiles/bin"
repo="$1"
shift
release_filename="$1"
shift
out_filename="$basedir/$1"
shift
curl -sSL "https://github.com/$repo/releases/latest/download/$release_filename" -o "$out_filename"
chmod +x "$out_filename"

2
.gitignore vendored
View file

@ -1,3 +1,5 @@
.devfiles/bin/**
# ---> Terraform
# Local .terraform directories
**/.terraform/*

View file

@ -1,12 +1,13 @@
set dotenv-load := true
import '.devfiles/justfile'
export ANSIBLE_VAULT_PASSWORD_FILE := justfile_directory() + "/.decrypt-pass.txt"
export ANSIBLE_BECOME_PASSWORD_FILE := justfile_directory() + "/.become-pass.txt"
# Debug output, disabled in CI
export ANSIBLE_DISPLAY_ARGS_TO_STDOUT := if env('CI', '') == 'true' { 'false' } else { 'true' }
# export ANSIBLE_ENABLE_TASK_DEBUGGER := if env('CI', '') == 'true' { 'false' } else { 'true' }
export ANSIBLE_DISPLAY_ARGS_TO_STDOUT := if env('CI', '') == 'true' { 'false' } else { 'true' }
# export ANSIBLE_ENABLE_TASK_DEBUGGER := if env('CI', '') == 'true' { 'false' } else { 'true' }
play +ARGS:
uv run ansible-playbook {{ ARGS }}
@ -20,7 +21,7 @@ list-host:
uv run ansible-inventory --list
[no-cd]
encrypt +ARGS:
encrypt-file +ARGS:
uv run ansible-vault encrypt {{ ARGS }}
encrypt-var NAME +CONTENT='':
@ -30,7 +31,7 @@ decrypt-var FILE NAME:
uv run ansible localhost -m ansible.builtin.debug -e "@{{ FILE }}" -a var="{{ NAME }}"
[no-cd]
decrypt +ARGS:
decrypt-file +ARGS:
uv run ansible-vault edit {{ ARGS }}
[no-cd]