chore: move id.tjo.space to cloud infra

This commit is contained in:
Tine 2025-03-15 11:07:02 +01:00
parent 49a91ae86e
commit 5abf1bb08e
Signed by: mentos1386
SSH key fingerprint: SHA256:MNtTsLbihYaWF8j1fkOHfkKNlnN1JQfxEU/rBU8nCGw
26 changed files with 0 additions and 758 deletions

View file

@ -1,61 +0,0 @@
#!/bin/bash
set -euo pipefail
SERVICE_DIR="/root/service"
mkdir -p ${SERVICE_DIR}
cd ${SERVICE_DIR}
echo "== Fetch Source Code (from git)"
# Clone if not yet cloned
if [ ! -d .git ]; then
git clone \
--depth 1 \
--no-checkout \
--filter=tree:0 \
https://github.com/tjo-space/tjo-space-infrastructure.git .
git sparse-checkout set --no-cone /id.tjo.space
git checkout
else
git fetch --depth=1
git reset --hard origin/main
fi
echo "=== Copy Configuration Files"
rsync -a id.tjo.space/root/ /
systemctl daemon-reload
echo "=== Prepare srv directories"
mkdir -p /srv/authentik/{media,certs,custom-templates}
chown -R 1200:1200 /srv/authentik
mkdir -p /srv/postgresql/{data,backups}
echo "=== Read Secrets"
age -d -i /etc/age/key.txt id.tjo.space/secrets.env.encrypted >id.tjo.space/secrets.env
set -a && source id.tjo.space/secrets.env && set +a
echo "=== Prepare Configurations"
cat <<EOF >/etc/postgresql/secrets.env
POSTGRES_PASSWORD=${POSTGRESQL_PASSWORD}
EOF
cat <<EOF >/etc/authentik/secrets.env
AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY}
AUTHENTIK_EMAIL__PASSWORD=${AUTHENTIK_EMAIL__PASSWORD}
AUTHENTIK_POSTGRESQL__PASSWORD=${POSTGRESQL_PASSWORD}
EOF
echo "=== Setup Caddy"
systemctl restart caddy
echo "=== Setup Postgresql"
systemctl restart postgresql
systemctl start postgresql-backup.timer
echo "=== Setup Valkey"
systemctl restart valkey
echo "=== Setup Authentik Server"
systemctl restart authentik-server
echo "=== Setup Authentik Worker"
systemctl restart authentik-worker

View file

@ -1,51 +0,0 @@
default:
@just --list
secrets-encrypt:
#!/usr/bin/env sh
age --encrypt -R {{source_directory()}}/secrets.keys \
secrets.env > secrets.env.encrypted
secrets-decrypt:
#!/usr/bin/env sh
age --decrypt \
-i ${HOME}/.config/sops/age/keys.txt \
secrets.env.encrypted > secrets.env
apply:
#!/usr/bin/env sh
cd {{source_directory()}}/terraform
tofu init
tofu apply
destroy:
#!/usr/bin/env sh
cd {{source_directory()}}/terraform
tofu destroy
outputs:
#!/usr/bin/env sh
cd {{source_directory()}}/terraform
tofu output
provision node:
#!/usr/bin/env sh
set -eou pipefail
pushd {{source_directory()}}/terraform > /dev/null
IPV4=$(tofu output -json | jq -r '.ipv4.value["{{node}}"]')
popd > /dev/null
echo "= Provision node: {{node}} (${IPV4})"
cat provision.sh | ssh -o StrictHostKeyChecking=no root@${IPV4} 'sudo bash -s'
configure node:
#!/usr/bin/env sh
set -eou pipefail
pushd {{source_directory()}}/terraform > /dev/null
IPV4=$(tofu output -json | jq -r '.ipv4.value["{{node}}"]')
popd > /dev/null
echo "= Configuring node: {{node}} (${IPV4})"
cat configure.sh | ssh -o StrictHostKeyChecking=no root@${IPV4} 'sudo bash -s'

View file

@ -1,16 +0,0 @@
#!/bin/bash
set -euo pipefail
pushd "$(mktemp -d)"
echo "=== Installing Dependencies"
DEBIAN_FRONTEND=noninteractive apt update -y
DEBIAN_FRONTEND=noninteractive apt install -y \
rsync \
jq \
podman \
age
echo "=== Generating Age Key"
mkdir -p /etc/age
age-keygen -o /etc/age/key.txt

View file

@ -1,23 +0,0 @@
AUTHENTIK_DISABLE_UPDATE_CHECK=false
AUTHENTIK_ERROR_REPORTING__ENABLED=false
AUTHENTIK_DISABLE_STARTUP_ANALYTICS=true
AUTHENTIK_AVATARS=initials
# AUTHENTIK_SECRET_KEY="via secrets.env file"
AUTHENTIK_IMPERSONATION="false"
AUTHENTIK_REDIS__HOST=systemd-valkey
AUTHENTIK_POSTGRESQL__HOST=systemd-postgresql
AUTHENTIK_POSTGRESQL__USER=id.tjo.space
AUTHENTIK_POSTGRESQL__NAME=id.tjo.space
# AUTHENTIK_POSTGRESQL__PASSWORD="via secrets.env file"
AUTHENTIK_EMAIL__HOST=mail.tjo.space
AUTHENTIK_EMAIL__PORT="587"
AUTHENTIK_EMAIL__USE_TLS="true"
AUTHENTIK_EMAIL__FROM=id@tjo.space
AUTHENTIK_EMAIL__USERNAME=id@tjo.space
# AUTHENTIK_EMAIL__PASSWORD="via secrets.env file"

View file

@ -1,5 +0,0 @@
id.tjo.cloud,
id.tjo.space {
respond /healthz "OK"
reverse_proxy systemd-authentik-server:9000
}

View file

@ -1,23 +0,0 @@
[Unit]
Description=An Authentik Server
Requires=postgresql.service
After=postgresql.service
Requires=valkey.service
After=valkey.service
[Container]
Image=ghcr.io/goauthentik/server:2025.2.1
Exec=server
EnvironmentFile=/etc/authentik/authentik.env
EnvironmentFile=/etc/authentik/secrets.env
Volume=/srv/authentik/media:/media
Volume=/srv/authentik/custom-templates:/custom-templates
Network=main.network
User=1200
AutoUpdate=registry
[Service]
Restart=always
[Install]
WantedBy=multi-user.target

View file

@ -1,24 +0,0 @@
[Unit]
Description=An Authentik Worker
Requires=postgresql.service
After=postgresql.service
Requires=valkey.service
After=valkey.service
[Container]
Image=ghcr.io/goauthentik/server:2025.2.1
Exec=worker
EnvironmentFile=/etc/authentik/authentik.env
EnvironmentFile=/etc/authentik/secrets.env
Volume=/srv/authentik/media:/media
Volume=/srv/authentik/certs:/certs
Volume=/srv/authentik/custom-templates:/custom-templates
Network=main.network
User=1200
AutoUpdate=registry
[Service]
Restart=always
[Install]
WantedBy=multi-user.target

View file

@ -1,19 +0,0 @@
[Unit]
Description=A Caddy Container
[Container]
Image=docker.io/caddy:2
PublishPort=[::]:443:443
PublishPort=0.0.0.0:443:443
PublishPort=[::]:80:80
PublishPort=0.0.0.0:80:80
Volume=/etc/caddy:/etc/caddy:ro
Network=main.network
AutoUpdate=registry
[Service]
Restart=always
[Install]
WantedBy=multi-user.target
WantedBy=authentik-server.service

View file

@ -1,2 +0,0 @@
[Network]
IPv6=true

View file

@ -1,22 +0,0 @@
[Unit]
Description=A Postgresql Container
[Container]
# Make sure the postgres image/version matches the one in backup service.
Image=docker.io/postgres:17.4
Volume=/srv/postgresql/data:/var/lib/postgresql/data
EnvironmentFile=/etc/postgresql/secrets.env
Environment=POSTGRES_USER=id.tjo.space
Environment=POSTGRES_DB=id.tjo.space
Network=main.network
AutoUpdate=registry
HealthCmd=pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}
HealthStartPeriod=20s
[Service]
Restart=always
[Install]
WantedBy=multi-user.target
RequiredBy=authentik-server.service
RequiredBy=authentik-worker.service

View file

@ -1,18 +0,0 @@
[Unit]
Description=A Valkey Container
[Container]
Image=docker.io/valkey/valkey:8
Network=main.network
AutoUpdate=registry
HealthCmd=valkey-cli ping | grep PONG
HealthStartPeriod=20s
HealthTimeout=3s
[Service]
Restart=always
[Install]
WantedBy=multi-user.target
RequiredBy=authentik-server.service
RequiredBy=authentik-worker.service

View file

@ -1,2 +0,0 @@
POSTGRES_USER=id.tjo.space
POSTGRES_DB=id.tjo.space

View file

@ -1,3 +0,0 @@
#!/bin/bash
echo "CURRENT_DATE=$(date +%Y_%m_%d)"
echo "CURRENT_DATETIME=$(date +%Y-%m-%d_%H-%M-%S)"

View file

@ -1,31 +0,0 @@
[Unit]
Description=Backup PostgreSQL databases
Requires=main-network.service
Requires=postgresql.service
After=main-network.service
After=postgresql.service
RequiresMountsFor=/srv/postgresql/backup
RequiresMountsFor=%t/containers
[Service]
Delegate=yes
Type=notify
NotifyAccess=all
SyslogIdentifier=%N
Environment=PODMAN_SYSTEMD_UNIT=%n
KillMode=mixed
EnvironmentFile=/etc/postgresql/secrets.env
EnvironmentFile=/etc/postgresql/postgresql.env
Environment=BACKUP_DIR=/srv/postgresql/backups
Environment=POSTGRES_HOST=systemd-postgresql
ExecStartPre=/usr/bin/systemctl stop authentik-server authentik-worker
ExecStartPre=/usr/bin/mkdir -p $BACKUP_DIR
ExecStart=/usr/bin/podman run --name=systemd-%N --cidfile=%t/%N.cid --cgroups=split --sdnotify=conmon --detach --replace --rm --network systemd-main -v ${BACKUP_DIR}:/backups -e PGPASSWORD=${POSTGRES_PASSWORD} docker.io/library/postgres:17.4 pg_dump --username=${POSTGRES_USER} --host=${POSTGRES_HOST} --format=custom --file=/backups/${CURRENT_DATETIME}.sql ${POSTGRES_DB}
ExecStop=/usr/bin/podman rm -v -f -i --cidfile=%t/%N.cid
ExecStopPost=-/usr/bin/podman rm -v -f -i --cidfile=%t/%N.cid
ExecStopPost=/usr/bin/systemctl start authentik-server authentik-worker

View file

@ -1,13 +0,0 @@
[Unit]
Description=Backup PostgreSQL databases daily
Requires=postgresql.service
After=postgresql.service
[Timer]
OnCalendar=daily
AccuracySec=1h
Persistent=true
RandomizedDelaySec=4h
[Install]
WantedBy=timers.target

View file

@ -1 +0,0 @@
d /srv/postgresql/backups 0750 root root 10d -

View file

@ -1,30 +0,0 @@
#!/bin/bash
set -euo pipefail
# Restoring PostgreSQL Database
#
# The backup file from pg_dump (with format=custom)
# must be provided via stdin.
#
# Example:
#
# cat /path/to/backup | postgresql-backup-restore
#
echo "=== Reading Configuration"
set -a && source /etc/postgresql/postgresql.env && set +a
echo "== Stopping Authentik..."
systemctl stop authentik-server authentik-worker
echo "== Dropping and Recreating Database..."
podman exec systemd-postgresql dropdb --username="${POSTGRES_USER}" --force --if-exists "${POSTGRES_DB}"
podman exec systemd-postgresql createdb --username="${POSTGRES_USER}" "${POSTGRES_DB}"
echo "== Restoring Database..."
cat /dev/stdin | podman exec -i systemd-postgresql pg_restore \
--username="${POSTGRES_USER}" \
--dbname="${POSTGRES_DB}"
echo "== Starting Authentik..."
systemctl start authentik-server authentik-worker

View file

@ -1,7 +0,0 @@
age-encryption.org/v1
-> X25519 uciAKItyJPgE6POgRKj1k9O0KVxecWKSEBT1nDkTE3o
psEa+bNg0bt+GxYz24D2PYv7Sune4tjUQ5Z7wI5egGk
-> X25519 05XZ+FXu09rHr+XDldVWJa4JDzg5/6b0v0GnaMLWNGU
g9+lEAgvcatVE9YIUPIZSkE9FFTYBmtDsK1C9XGpEl4
--- VItz74sI8Tr/0l/XfvgRt+ABLiyfF1ojzYjVPTUTt6g
OœºÐ}äÆ Ï)Å<>èšCqÞö­ªüîl„FüuíãÛÈ`y¨ÂÉÎéÞÕ0) Ç<>}\fÈ¥ox| Ö¡x—‡<E28094>´Ø¬,Ÿs÷jq´\ ŸdMÑ4WŽÞÞG Fi½d˜«<CB9C>h:d\½2G¿Ù,€bÿŠžÂå¼ØmÖé ÉùüûèV4)Gwb"7eAÔý½<C3BD>ÙŽi<C5BD>ͺw1ÔNÆ·;L™lŠë“î™*ùD)ÏW‡­qƒ‘¬ “Éö¬ŒûÜ<C3BB>"xQ†ÝFïjKf¢ƒâõúøªõ-k=<3D>±ß_°M'h¦ô¤-˜CTO˜p ŽÅô]ŸíF«<19>Pv-ÑIZszÌ

View file

@ -1,4 +0,0 @@
# Tine
age1cl3d4wtrrqrgldmrzpu53q2mk60r7hrhrymsrwss8s57z4mdv9fst4a55h
# Node 01
age10h4gqtaruhcrfzd2aq00zlxlh9pscpxrh8chqvvjmzj6waq0d9lqr0v9jw

View file

@ -1,47 +0,0 @@
# This file is maintained automatically by "tofu init".
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/dnsimple/dnsimple" {
version = "1.8.0"
constraints = "1.8.0"
hashes = [
"h1:Nwu+3tVJnNmSJQoctRSWAamUX3AiTCZ5mOMtAUPtg7Q=",
"zh:0852fd9523268b30fb637a03a0cb6d6a5878cbbf7e0e4219615c9ba073fbdf17",
"zh:0ac43193082dd467abad4937b0abb97ea349205726fc450cb3a94dc0db6e9a49",
"zh:10e4aad54c2d6cbd9328a1661d72a978357743eda7099a3f120a497119be4ff1",
"zh:211d481935dec36903928c51f5f4f15d98313f6d50649ea064bc20a4d6541678",
"zh:2705b5ebac4219449f9126cc19fa982cf0644e5df60d3d5254131d2e2d676afd",
"zh:27f0df80af6652e96f85a0856daa571af495d2119ab126199d6d5ab53f6eb887",
"zh:27fbb2fb69291a660d8e99ba960f01051b7fc28658f7932772ce7e80a42bd6e9",
"zh:3ecf20ead1f044f08ae9e411c9341d47319eb6af5d6543b58f2f6932c6b288b0",
"zh:635055f0af3eb27d30801aeead51d8b960c386f369a378fad7146350ec6b4d68",
"zh:7ca26f64221a9c6634a02296e30a87e3fffed1144ac57e0ae9a86a448f42d4ca",
"zh:895e0732da00942b2eb13c78673a9c9268e87e92a225999cddf2d13b823f3295",
"zh:b3806e5b687faf97ad8cb2a23e105729059693ae07a229fecef52da5279d7bd1",
"zh:c3c284a54aab3ddea2dba140af4a707ce077c9c2d9d34556902afdb25fe6ca8e",
"zh:d2539f2cc5960a55a53eaaa90248abfb3167275e34af7e93735ec4571eb879eb",
"zh:f809ab383cca0a5f83072981c64208cbd7fa67e986a86ee02dd2c82333221e32",
]
}
provider "registry.opentofu.org/hetznercloud/hcloud" {
version = "1.50.0"
constraints = "1.50.0"
hashes = [
"h1:z5J9wgkt9xIKlr699hWCjHSS7K4bYKWWnGCg2T/YNmg=",
"zh:0bd650fb52e272f74eda5053a7bb62f0fd92182f57ad3ef742abe165cb8cac98",
"zh:1c36667aa89b672a96c0df3d3c613e80916a2d0944b1a1f9112065f40630b689",
"zh:21f90683890ea7a184b0ac55efd52911694ba86c58898bc8bbe87ee2507bb1eb",
"zh:24349d483a6ff97420d847433553fa031f68f99b9ead4ebb3592fc8955ef521f",
"zh:3fffd83c450bea2b382a986501ae51a4d3e6530eda48ed9ca74d518e4a909c37",
"zh:43d7de1dc4c50fae99d6c4ab4bb394608948091f5b53ddb29bc65deead9dc8a6",
"zh:47a37d5fec79dd8bc9cab2c892bc59e135b86cb51eebe2b01cdb40afac7ed777",
"zh:6efeb9530b8f57618c43f0b294b983d06cce43e9423bdd737eed81db913edb80",
"zh:7511ace4b33baddfc452ef95a634d83b92bfbfaa23cb30403899e95b64727075",
"zh:7bade77104ed8788c9b5171c7daae6ab6c011b3c40b152274fda803bf0bf2707",
"zh:83bce3ff9a1bd52a340a6ebdd2e2b731ec6fb86811ef0ed8a8264daf9d7beb61",
"zh:a09d5fce4c8d33e10b9a19318c965076db2d8ed5f62f5feb3e7502416f66d7bf",
"zh:c942832b80270eb982eeb9cc14f30a437db5fd28faf37d6aa32ec2cd345537d6",
"zh:e2c1812f2e1f9fac17c7551d4ab0efb713b6d751087c18b84b8acd542f587459",
]
}

View file

@ -1,81 +0,0 @@
resource "hcloud_ssh_key" "main" {
for_each = var.ssh_keys
name = each.key
public_key = each.value
}
locals {
nodes = {
for k in var.nodes : k => {
meta = {
name = k
domain = "next.id.tjo.space"
}
}
}
}
resource "hcloud_server" "main" {
for_each = local.nodes
name = "${each.value.meta.name}.${each.value.meta.domain}"
image = "ubuntu-24.04"
server_type = "cax11"
datacenter = "hel1-dc2"
public_net {
ipv4_enabled = true
ipv6_enabled = true
}
backups = true
ssh_keys = [for key, value in var.ssh_keys : hcloud_ssh_key.main[key].id]
user_data = <<-EOF
#cloud-config
hostname: "${each.value.meta.name}"
fqdn: "${each.value.meta.name}.${each.value.meta.domain}"
prefer_fqdn_over_hostname: true
write_files:
- path: /etc/tjo.space/meta.json
encoding: base64
content: ${base64encode(jsonencode(each.value.meta))}
- path: /tmp/provision.sh
encoding: base64
content: ${base64encode(file("${path.module}/../provision.sh"))}
packages:
- git
- curl
package_update: true
package_upgrade: true
power_state:
mode: reboot
swap:
filename: /swapfile
size: 512M
runcmd:
- "chmod +x /tmp/provision.sh"
- "/tmp/provision.sh"
- "rm /tmp/provision.sh"
EOF
}
resource "dnsimple_zone_record" "a" {
for_each = local.nodes
zone_name = "tjo.space"
name = trimsuffix(each.value.meta.domain, ".tjo.space")
value = hcloud_server.main[each.key].ipv4_address
type = "A"
ttl = 300
}
resource "dnsimple_zone_record" "aaaa" {
for_each = local.nodes
zone_name = "tjo.space"
name = trimsuffix(each.value.meta.domain, ".tjo.space")
value = hcloud_server.main[each.key].ipv6_address
type = "AAAA"
ttl = 300
}

View file

@ -1,7 +0,0 @@
output "ipv4" {
value = { for node in var.nodes : node => hcloud_server.main[node].ipv4_address }
}
output "ipv6" {
value = { for node in var.nodes : node => hcloud_server.main[node].ipv6_address }
}

View file

@ -1,23 +0,0 @@
terraform {
required_providers {
hcloud = {
source = "hetznercloud/hcloud"
version = "1.50.0"
}
dnsimple = {
source = "dnsimple/dnsimple"
version = "1.8.0"
}
}
required_version = "~> 1.7.3"
}
provider "hcloud" {
token = var.hcloud_token
}
provider "dnsimple" {
token = var.dnsimple_token
account = var.dnsimple_account_id
}

View file

@ -1,215 +0,0 @@
{
"version": "ENC[AES256_GCM,data:MA==,iv:dKwTtBALT2dRoEfLIkvfY8Dc64VcGama/3pE3xML/7o=,tag:hvdtRh4hoGVOWFg9Roc6rA==,type:float]",
"terraform_version": "ENC[AES256_GCM,data:zmICcqg=,iv:NUJitY/3jrrW2f37Cc0+XWoXcSVT6BE+RcEqH7mzUrA=,tag:TL2y7c1w2QB47LgdCsqHkg==,type:str]",
"serial": "ENC[AES256_GCM,data:2EU=,iv:3zkjtHih1zF9v0DkSdSujxJx5fffxiqiWD99ekyQZ98=,tag:NJBROX5VAQhshnMc7wVSTw==,type:float]",
"lineage": "ENC[AES256_GCM,data:pVgCDeZ+zLfgch8hgb1N4VOYvef94QAphtq3mWHjeTuHfh8U,iv:J2ps9SZFGP7TDQ9fByC/U9zXN8lke2jg/BRKpaXOYnw=,tag:jfcq7D4hXarHqhbQ/UO4tg==,type:str]",
"outputs": {
"ipv4": {
"value": {
"01": "ENC[AES256_GCM,data:OuVuWAIfA+cLrofPqQ==,iv:A2a+ZnjjBgknXOIWAOTv63BbiJWOC3Xqr/lmpEgcIXQ=,tag:BwSNHgPE1x82sMXXCesPog==,type:str]"
},
"type": [
"ENC[AES256_GCM,data:fsuMTWI+,iv:mE5aQKtqOmveM7imToQh9EPPaKQJaZ/kFNTTCQpTFj4=,tag:eoAV5tDrssnxtFdoTmdevQ==,type:str]",
{
"01": "ENC[AES256_GCM,data:8uuIteu2,iv:N7yoegiSOjpq5Te8NRHbie8Qsm9ExdCZLKr5AQ3RJVA=,tag:FuEO8fwgCzOAcMVcUs0ApQ==,type:str]"
}
]
},
"ipv6": {
"value": {
"01": "ENC[AES256_GCM,data:ME2FNX4m1myeKBknVzyLDr2ccftZ,iv:vP/UBpE8lLO2cgnButAZLyIhP8lyJkwhkkMYkktSa6g=,tag:/r19NYaRrO3cmmkXwsWjVA==,type:str]"
},
"type": [
"ENC[AES256_GCM,data:9UM0gi06,iv:HFU2cV0ucah/NuvlqSFcAsj1qlyfmO29XBMiMt6QKaQ=,tag:IvBr3Oli+quXWmqzVamsSg==,type:str]",
{
"01": "ENC[AES256_GCM,data:dq8zkf4u,iv:kcQSUEmh5A+1vGT8D9Psf+K8G+tBGIFh5a7cfaDxTwI=,tag:VwLc30bdeQmUz3roALhtdA==,type:str]"
}
]
}
},
"resources": [
{
"mode": "ENC[AES256_GCM,data:irPRMXW5Iw==,iv:P/TeCUkjxIveU0+mFoxxiW1+skhSQXYUXeJolfoGPnk=,tag:aILRTgXHDodW8NnrL10Eng==,type:str]",
"type": "ENC[AES256_GCM,data:3AXyhJ7NbKwsGhK8Q8A+ADYwJaU=,iv:fobOD/VVrBOGd/XkxpI+UJpFa/wSL3sBDPXMoFrIvIE=,tag:2Xgf97uGFAxfH35OKU/JLQ==,type:str]",
"name": "ENC[AES256_GCM,data:SQ==,iv:b6miEQ7lnYvBzJM5tvkByoOOmAtGcQyy2P5hre8Ygkc=,tag:hyzXK6nGdaxHD1SdPUjd3g==,type:str]",
"provider": "ENC[AES256_GCM,data:s9aUqWEhldirVPpXF8fh1laaoS9pzYv8aoOplW51eHRLbeaXbuhJz5BevDUUuBR0PrAP,iv:4oDnuKtRa18fgtsLamXcRZtR1ONVz5CYvcxtr7I/mB8=,tag:kUwJrw3BBjDb94aucSM1mw==,type:str]",
"instances": [
{
"index_key": "ENC[AES256_GCM,data:/HY=,iv:+6H12ogk52sEEi/68i8qrxaEAAvjIlrrGgigrDBzRGE=,tag:Uc5NHbVUfDxy0taNq8Z95Q==,type:str]",
"schema_version": "ENC[AES256_GCM,data:Yw==,iv:KwiURRyryvi6dLqU4IZ/GysmOIy0iyYqVZ6Nnur3YVA=,tag:VUan024bWUQJ7LUsGwgaww==,type:float]",
"attributes": {
"id": "ENC[AES256_GCM,data:K3oW4DQzpBs=,iv:oc886AOksOnF++Uq4MaHgLVY47k1jHyKxvDi2PCbTSE=,tag:+VezWf5AkQCgZ2fi9svJiw==,type:float]",
"name": "ENC[AES256_GCM,data:AIx+gXaCFA==,iv:onMBG+6nOIFP6SwkFJNHTrqX4NIuiKy894SaT6F8dUU=,tag:ixWfIgqe5b23+UZqxoGc5g==,type:str]",
"name_normalized": "ENC[AES256_GCM,data:rBkb21gB4w==,iv:5fkc08WI02p4d85AB1XtChdbA2Akhjm4TC9OIzN/pJk=,tag:HSqrYKJMTZPDkX+hyO7avg==,type:str]",
"priority": "ENC[AES256_GCM,data:hw==,iv:uo+LuuNd5VBWnI4A96R8worC4FOcH+Vm77nye+U1cJg=,tag:OJorW0Yofkvz5VJ5caW0GQ==,type:float]",
"qualified_name": "ENC[AES256_GCM,data:GIjJSAjjwc0EPqWonTDo46w=,iv:U40uGvVsvWE3FXDSstTwm9xTL3vdc0+74TmgV89Py84=,tag:gTlNSHgnpXTe33lXn437SQ==,type:str]",
"regions": null,
"ttl": "ENC[AES256_GCM,data:wQNu,iv:IFn8H7yX1Cna7U02iH2Ue9SbfbqfK5zdOk8Ismys95M=,tag:/jl8PvaOOIt55BKhctiP5w==,type:float]",
"type": "ENC[AES256_GCM,data:lA==,iv:CU59L9Bi1+eSBahikcH62KOa1pLoZpI7kH2hDm0vP4A=,tag:0nfFu1I3XA/sAAcaWrHgIg==,type:str]",
"value": "ENC[AES256_GCM,data:L0/Btca1xEVuq59LPw==,iv:8LIOiSpY+Eq4Q0snSiCXkY/CPOTjdDaOPi8fZU1Zp/E=,tag:JHamwo+1R31nsKW2GOTtdg==,type:str]",
"value_normalized": "ENC[AES256_GCM,data:Bf+RzAOf4Es6IEmWOg==,iv:E3pQqhfL0lbek04NQCKV63S4qFzbe1x//Ktt36QWVKM=,tag:nJAygtSqgv0W9S1M+sGnWQ==,type:str]",
"zone_id": "ENC[AES256_GCM,data:yiF5ccJbg9Ha,iv:Xi8DyawQ0BIsBWoQD9jvZ4bfOUSFDWbKtnVnGC65JKY=,tag:/ysAux2oAi+dBy5W8H0ZTQ==,type:str]",
"zone_name": "ENC[AES256_GCM,data:doGTBRMlMeT1,iv:7I/6+Zi7pnU/TdiorWDeWedUUhuiC0AKpMYLP8VZzUs=,tag:DQml8k+iBL92l289WD9LLA==,type:str]"
},
"sensitive_attributes": [],
"dependencies": [
"ENC[AES256_GCM,data:atAK8i3Rp7yrbpEFvIefd0sW,iv:I7nr4hHIlq0xcOxpmEPkA7zwObNIj4XiSwgFMIs18vY=,tag:HswYbCGveNY5eXW60mdixA==,type:str]",
"ENC[AES256_GCM,data:pxGURLPtVe4KhxtX7qn5Y4AhIA==,iv:9BO223ahy0Y9iJVGcUkAwnQ0TTy6wKBcHZjij1AieG8=,tag:jB+NeKpFZEQEtwhvcb6jwA==,type:str]"
]
}
]
},
{
"mode": "ENC[AES256_GCM,data:oWE5E6+MHg==,iv:Yza/sx4NVYKU0CzfuTRHdkXhnp384R5nWo+pIik2UJc=,tag:J03IksD+1BSDHZy1MxHItQ==,type:str]",
"type": "ENC[AES256_GCM,data:LjZM1JmvugndiC4VGD100qd44B4=,iv:Ii5eAP7Eg7Q2DCwnX9RKlyUJ6docAiq5uoDfo0Uptpk=,tag:Utxyd5qRbpTFYa1xc+16HQ==,type:str]",
"name": "ENC[AES256_GCM,data:qu1CiA==,iv:y2IJCMyuDalXOuXnPnXR0++9dIbGNSgR4Icyqgchoo4=,tag:0BmhO6B16SkOME0g5zmPjg==,type:str]",
"provider": "ENC[AES256_GCM,data:H455O+hLRDOi3+zw9LFae8SV0Hmmqz1/YNxd02wqMNFY/a8fOQZf/SdDctlKcfOFZHEk,iv:FCU6bn9VpdHK9Qc6zAClhNMylycjyVzYIDM7AxNUJAs=,tag:GS53w5VU6jigHIooin/9Zg==,type:str]",
"instances": [
{
"index_key": "ENC[AES256_GCM,data:TYw=,iv:sMvWcC3Q02SBbURjWh225khYhhp4Vsxu7fTUdq6aksk=,tag:DBkCLt80Yiq4E+S1o6kHSA==,type:str]",
"schema_version": "ENC[AES256_GCM,data:CA==,iv:z3nQN8a/8CBRuQDQXyjRTL/bXlhYhR+DyK+uLg8P5eI=,tag:WgEy4g3lzWRoYTOZ6QC5HQ==,type:float]",
"attributes": {
"id": "ENC[AES256_GCM,data:2h72tgxKjZ4=,iv:ckrHb9yjEjU6Q6vsNGY1AO0DBXhgeBYMOhQGpwiFjks=,tag:guo+EwQlK4F/gM/KNXAdrg==,type:float]",
"name": "ENC[AES256_GCM,data:Uj+N8PI3ug==,iv:ocFwop5n+7gt/HUkAh3YDo+LoeAsVB34Jfh8azuRAN8=,tag:H7nAg2DgpXf1VGGdAqThgw==,type:str]",
"name_normalized": "ENC[AES256_GCM,data:Hmgj9ZJZFw==,iv:QEC1p/7JvWL4IvLve4CyoBMq1UxN9Jrc44m3Jqn/v3g=,tag:iLd52opPL6R+kvOMJZltIg==,type:str]",
"priority": "ENC[AES256_GCM,data:6Q==,iv:AU0JxnNjy5jv9EiRy/Htea0uIIWjJcWY/HtXw57EpaY=,tag:qaqwsgrFyruRkYoF94eyRw==,type:float]",
"qualified_name": "ENC[AES256_GCM,data:3OcZmee9EuJHr9OKlHAruKs=,iv:6R8Vzy9eKmP8bJ3JGiPUe5zQFrt4MmoDnGotOuRtSsk=,tag:S+YdDMJn7dFz6A/PSb0DMg==,type:str]",
"regions": null,
"ttl": "ENC[AES256_GCM,data:zXOL,iv:m1Y1H4a++JVzXqFO/TSOwpaQNaCuEU5/nXK3Y4GnGpw=,tag:hwACo8iAKNXGf7WceUKvxQ==,type:float]",
"type": "ENC[AES256_GCM,data:zUrMdg==,iv:JKgIsxAhFbaBsHzoaSGH43cBHg9T4tNhdOonyYF9Q5I=,tag:CafgHA9mhR8Mkjw6dX0+sg==,type:str]",
"value": "ENC[AES256_GCM,data:suYbxRQzynslMU/1RAYJut4yBRzx,iv:SZgi7krdH0D97MIOmFJK7zcBdZXH8hYrN9UKKZT+FLc=,tag:Z5dAqp2VLUjWk7svNKOckQ==,type:str]",
"value_normalized": "ENC[AES256_GCM,data:kGH82MiNyJX0GjbAX3GUSqWS9KwO,iv:OC2JbLpEjWxx1cqpSULo1Ibd6Z24iYdIHxTCrMketwk=,tag:DDBoAJP1sQ4zBlmMpac/kA==,type:str]",
"zone_id": "ENC[AES256_GCM,data:iNNcY0af4lGY,iv:ultPUrBfRoN8D5bYtY5/DWu7Q4p5fkSeOtF4SMZR418=,tag:fQDwDUzOgu0VgbV8BBNVcQ==,type:str]",
"zone_name": "ENC[AES256_GCM,data:ce0dxGkMoj7N,iv:1dS4CYc9jsdzA2TQnaBBL78QVGPjJ87zZ+oa+daIaxc=,tag:Sd8xCw5vTfVEtZZiGgrAjg==,type:str]"
},
"sensitive_attributes": [],
"dependencies": [
"ENC[AES256_GCM,data:ehkvlp12wUJFKl7VOrOFXsBQ,iv:S2TVOutBiGLr8JLK46ZX8YD8iVwhV1b+o19cRjjlAOc=,tag:8DoXw5QRiy3Pg5QIZCNb/Q==,type:str]",
"ENC[AES256_GCM,data:53w+F2Nk/5qg5JepJrH2IPI1+Q==,iv:D9vBJtLJZk/SxTR/xjdzd7bXtbqNTWJ5chDRPnsnNNE=,tag:zKSBPIudHVXvCljdBmx54Q==,type:str]"
]
}
]
},
{
"mode": "ENC[AES256_GCM,data:eC9hz+lR4Q==,iv:WmtYuYk9lhN7N2lo/yVICPC5L02D3S2Z6UTu2Cfrn70=,tag:/10RVfgs5bbljgRpgrnErQ==,type:str]",
"type": "ENC[AES256_GCM,data:auRyjifdIWvqpQmjKg==,iv:0JPzkYfyWK60KyRakXQfCthr6rpfRggGO63XwQ2pkf0=,tag:XW54fSkm2nQj4WaMWMYsYw==,type:str]",
"name": "ENC[AES256_GCM,data:AsxS0Q==,iv:TgTZKIkYgNPCrZ1JZngxsM1gOmokn0c0bTq+9Bzt4j8=,tag:eKQLZ59Q6fDc9xIzBt5FwA==,type:str]",
"provider": "ENC[AES256_GCM,data:yIO7J2Lp2MHeSiiLS1te1Opp6NbtjUZ8Yozvv+Y764KLYslQ6UOBw0Cxi51UQPFdCjsp3G8=,iv:LPVs6OHsi23nsJfq3pIDWH6pnB4cSUxhT4msrNVaqlA=,tag:YuGDm6L1mt+AVbQkAztLhQ==,type:str]",
"instances": [
{
"index_key": "ENC[AES256_GCM,data:/cE=,iv:stZ4QcYHvLG7GGjDSz0i7Z6Dm3HPrKy18htxqL08Cwo=,tag:aK/yo5ikNdv0JI7mHdzg8w==,type:str]",
"schema_version": "ENC[AES256_GCM,data:hw==,iv:qEP6KJKaJoKabsVBIbnfnvzHIPsyg+nYamzr0Fi6aUY=,tag:xxSI79HuwnKaZDDDkJKtqg==,type:float]",
"attributes": {
"allow_deprecated_images": "ENC[AES256_GCM,data:XFSr3XU=,iv:7R+Sv8RocfuhyVT4uqPz4rKy7yYGOnK6rpPmGHNrk3s=,tag:+VWGD2xku5xx6QEh3mtjOA==,type:bool]",
"backup_window": "ENC[AES256_GCM,data:p77D9Cc=,iv:QX2mXfdX+8M4ogWk6kRejDAjexff/H24Pkz6fMAA6qc=,tag:1qg5HjBT1cbe7EMqDwsOUA==,type:str]",
"backups": "ENC[AES256_GCM,data:rhRhvA==,iv:XKkodCP2J0KL0DVobNg1wf38V/6+pLUwoeDsHHUNGh8=,tag:Tk/L9iuW8dR1JC4NndB88A==,type:bool]",
"datacenter": "ENC[AES256_GCM,data:Z66oQcO0nZo=,iv:wt+fsx5F5WOGIqBdlEvyGjIgJEPaNd8tIvzMFo9qMAI=,tag:QRbUUzDfGD0NHc8faU936A==,type:str]",
"delete_protection": "ENC[AES256_GCM,data:XS44Iko=,iv:3tErP+QBN9Kj+hB3MzijfSPN0HZ7tZoCqFbTYS+iDus=,tag:7W04zw903fAxHDnLVgXN8Q==,type:bool]",
"firewall_ids": [],
"id": "ENC[AES256_GCM,data:qAxZyebScuI=,iv:f3Zwe2w5PBENBRjUCGMtGQH7CpVCNjVAONXDBeAj6fM=,tag:yms9L/rgoQWSwlf6TTJBvA==,type:str]",
"ignore_remote_firewall_ids": "ENC[AES256_GCM,data:NdLb2mk=,iv:LROidqXw5wK75oeX+IUyeB8MXfpa73dJ9WweMN2Xx2w=,tag:5YlMm3vyLPFBDMJMZWLDYA==,type:bool]",
"image": "ENC[AES256_GCM,data:oE4WcV9bexhRoXhG,iv:JUEcR8dkqOxl6udSYUpvtm4gO00UjUU+G1s/52Xa0mI=,tag:WdwQtFm14PwEW/m5MMN73g==,type:str]",
"ipv4_address": "ENC[AES256_GCM,data:Dh548ruHUBZ/3TNctQ==,iv:qCqRZbLPQA1cLPlJ/EH4pVJ5E/tit56jnKVC40hPr60=,tag:CXET71+5JupfA73XMYXNPQ==,type:str]",
"ipv6_address": "ENC[AES256_GCM,data:x54DNAcPMELDMnxn1U4mjgBPci1y,iv:Zo19KuWE2TEuhb3FvD/sjzmzhBxxrt+ozKqKjtyILo4=,tag:x3UhWxSZ/qZ1elwjLoYbyQ==,type:str]",
"ipv6_network": "ENC[AES256_GCM,data:U/INBD8ToCxzaRl5D2udRezukUYdRhU=,iv:U/CsiVYjWIzC1yihCu4D2HkDMYL8wrBrmwj4gfUxxGY=,tag:rAU+wgYxnl9qyswuaoB5pg==,type:str]",
"iso": null,
"keep_disk": "ENC[AES256_GCM,data:NWFjfdk=,iv:9VBqy6LHBlI/pEzXjZeO3lwBSvy3DF7FiG5XS5A8wIE=,tag:44IBZFo/UH1U7r39znU6fQ==,type:bool]",
"labels": null,
"location": "ENC[AES256_GCM,data:9R5LBw==,iv:hoXH8OsIjrwN/oRPBxgtuUKarLPqsDHCy8MSJLjPMFg=,tag:T6FiLnB2GGlitm5/b/7IUA==,type:str]",
"name": "ENC[AES256_GCM,data:fE/u1i8LgM4Fgz0DR0h/IXRk0so=,iv:fQg13zLrgvjRHKLeksQwn/iS07ORuHoVOqhnh+iA2NA=,tag:DoZZeSohEcbJ65DdBFfbMA==,type:str]",
"network": [],
"placement_group_id": "ENC[AES256_GCM,data:Fw==,iv:yjTAHfnfoTWt5TXJAbDubsr2oF0w+Re36uQecFkdprw=,tag:e0oc9SF57Y8J4qFJCEvUSA==,type:float]",
"primary_disk_size": "ENC[AES256_GCM,data:4DI=,iv:RSVsyOuhkVOkTzIkTezK2ZFTx2sCdjdUQ2bG9zTeWGo=,tag:q53AeX4LphXaxMUY3LDrMw==,type:float]",
"public_net": [
{
"ipv4": "ENC[AES256_GCM,data:2g==,iv:n2kJ55dKlDw0xvLs316etfvjOUxUboGPMcKAmL3F3Ww=,tag:7j9h0frxTVjaK9jlo5exCA==,type:float]",
"ipv4_enabled": "ENC[AES256_GCM,data:81BXwQ==,iv:mgf8NbnrnbHmVlp1T2R+AQoNKSbugS6+VZ8yXSK9XDc=,tag:C7HhwD16NRq1MIy+uYddwg==,type:bool]",
"ipv6": "ENC[AES256_GCM,data:vw==,iv:DV/3NSVX4QqgKAaOHdQOWPirxlJ2yGkBzu5Zy/4ISuQ=,tag:H/DdkjMCJR5wMJBZ7t8WZQ==,type:float]",
"ipv6_enabled": "ENC[AES256_GCM,data:c6ldOQ==,iv:OMc8TP5oTDw/wWddtO3Oz1d9eCvirOG+i7Hd2cPZEcM=,tag:oc/q4r2ALAvDULBVoYJtOQ==,type:bool]"
}
],
"rebuild_protection": "ENC[AES256_GCM,data:Tv1Hc9M=,iv:hfB3R8wHA8W8ttANQaabitW5c1W+5GvPySbAiQs/pBo=,tag:AVoUpT+5AvvglH+25PI82g==,type:bool]",
"rescue": null,
"server_type": "ENC[AES256_GCM,data:ImK3UUA=,iv:8S/fMeCJLjfAyRgbKZhfF72m8pchf6vQVRl69uPSpiU=,tag:p4d5bz9LMes0MW7N86pbKA==,type:str]",
"shutdown_before_deletion": "ENC[AES256_GCM,data:0PtITvw=,iv:Kni5h4DPBqAjCj6VZYKmGE/PMHnDK2kTWDqKd8M8/LQ=,tag:kidjd+GpRvu+kZPiyNf2Jw==,type:bool]",
"ssh_keys": [
"ENC[AES256_GCM,data:wsI81TAYiv0=,iv:VpiiCVg0AU/5GREu1flZYS4tuXpMpP8F0BOKZ7F8mbA=,tag:PwoamlntOYFLE5KcigNQcg==,type:str]",
"ENC[AES256_GCM,data:3cGybH2moqY=,iv:8oYRcvSOckNgaXYzw6MGMai06V8pQmR2h3r52zSTyFE=,tag:tnl4Xfknou8ixnlWa4hpGw==,type:str]",
"ENC[AES256_GCM,data:WdTtHzw+deM=,iv:5GEZxAAaong8qLCk+wxQ/LyFrAI5CxiXKfLiPhF8TlQ=,tag:RyWet0A488fi2kGxPgTxzA==,type:str]"
],
"status": "ENC[AES256_GCM,data:WTMSppLLWQ==,iv:MLrns40EMiLDZHHqryCd6B6/EmTZIJAlSUmh0vrm0ZA=,tag:SBrr4Ey5S8gjnwmU+s4+wA==,type:str]",
"timeouts": null,
"user_data": "ENC[AES256_GCM,data:WwC/+SyCP2OlN/WuSyMSvPrkH9mB1dZYZyMAZA==,iv:nLIsJQV8Sn2Eu113CFMh6EFf8+ACYxSo3iSJSmWR2E0=,tag:pjrP96ibl+YpcalI0WHAhg==,type:str]"
},
"sensitive_attributes": [],
"private": "ENC[AES256_GCM,data:NKohTzZdfMte3eGaQO3rrM6gfbiurQtWJhuaDOjNikFrhvg4rzjYZLzHEfScxoxaMn1cwszxsy2jMSG9SGji+E1U3b/0OzsfUa18bMOm3p3QbOz59S+6bA==,iv:V6jpZlZcg0YBr7Myor1rB9MQ38h7PqZetycwZuvIkws=,tag:aOeV2np2Be//ODmDka8MEg==,type:str]",
"dependencies": [
"ENC[AES256_GCM,data:Sodpqeh7ELNa78UggocTRbXl4g==,iv:FKSj3VAZa8TAfoziZuBRmG5R7idYwyTytigLrRrvgew=,tag:y0jvzYRdhxWgaTUxkIM/MQ==,type:str]"
]
}
]
},
{
"mode": "ENC[AES256_GCM,data:MKgczioz5Q==,iv:WFPHyyLtqfTGJnD+t778JcXiC1YsCtMQsosFksu0N1Y=,tag:dDWKsQ2ChTRHkrzbyp+uvw==,type:str]",
"type": "ENC[AES256_GCM,data:qTximDfHhvVY4QcLsQ8=,iv:OVjeKQKXcgXbacyN0lbY7+y94/iGHnNDV3qavWXYF7E=,tag:/NxWdpyj1QFIGTmpM8mNTw==,type:str]",
"name": "ENC[AES256_GCM,data:gvpruw==,iv:4sbByk7jUuD2taKzEP7VwP+pWjq9l9oa8Za6m6suMPg=,tag:7ijIWp/9io5ErAwfMUKQDA==,type:str]",
"provider": "ENC[AES256_GCM,data:octE0h0q4awG/tRF5ihCUxtCzDWAHLnMMFagaagy9HwleUNvO7h/U95a5FF9EPnLVOmdYjE=,iv:5PZw7MNseXTAemFsjWSz/utIoOd6WUc2PG4Xk8r/khE=,tag:Cv1Zx6L1PzTbKLhQcmlrog==,type:str]",
"instances": [
{
"index_key": "ENC[AES256_GCM,data:0UhcbmUqgxfE,iv:Lw78NruE5uxjZ4cXaLGp3SBiBQj4CFM2lmhNP15uKfA=,tag:1ysR8kYo1/1K9pYVspwgWA==,type:str]",
"schema_version": "ENC[AES256_GCM,data:RA==,iv:LJycP5ZGiTESIrkXhyDNCs/X+lBX7LiQvfcSPLzoB4w=,tag:rLWWTmWL/+WXAi3blG2YLw==,type:float]",
"attributes": {
"fingerprint": "ENC[AES256_GCM,data:aOJGEhvxSeiX5nc3pi1g9EVfnr1RWS/01PXB22pveiTtv3XnXxArWBKBt4eCGbs=,iv:PNccaT697kzxw8mU6XE75B1R+4DxbMaTE66osKVaJNQ=,tag:+I5whp92ubRdAMHsv9DFwg==,type:str]",
"id": "ENC[AES256_GCM,data:Wd535dXXxr8=,iv:TMCb6HrVBScu3NsMcunMmvJ6Zbhi76dndu5uC1IPVW4=,tag:IlGbnXfKDJEfXUBfPF1dFw==,type:str]",
"labels": {},
"name": "ENC[AES256_GCM,data:a5nIfwIps45f,iv:UIiEDys2TsBWPXC4PSFD1cEaMLvmvTuiSwj2w+0Rnh8=,tag:GqIOweyiqmRoWpOg1PSRbw==,type:str]",
"public_key": "ENC[AES256_GCM,data:PQb2JzR6KW+esph10z8sSpKM53iiM7sUzi1cRh1JhmqwNaWGE0ZdEeC6GqHvOEDaELLXWkTsbCd26IA2xTLz7slu5Ss+uD31EOhL7VifP3rIQeLniLH7wfsGhCUp5U//47Lhkg==,iv:WxZ3WVianxLsGLj01OV+gcrwSr4Iki30OfBoTP7f3Iw=,tag:9z5vWqoOD7Ho8tB7CTgF3w==,type:str]"
},
"sensitive_attributes": []
},
{
"index_key": "ENC[AES256_GCM,data:UODvDREeM+5vf3o=,iv:cAb0V5WFe3AABqwF1f4PS9L6oRILvl1th7V479LGCUg=,tag:W9kJ1SaiylcJzQD0ALXnew==,type:str]",
"schema_version": "ENC[AES256_GCM,data:Rw==,iv:puko5K7kswE4Rf+atAfwWS4d3lO1nV0ghAXGfYJ66+Y=,tag:Pr6QO3ioNaKE8LUJRnjWkA==,type:float]",
"attributes": {
"fingerprint": "ENC[AES256_GCM,data:N1xRBMm6gsVE9QQNkl/04moYax0QHFzr4lja2VPFDgSsJ5B+sdTGzpBfc16rwrM=,iv:4qbp3NTRz1Ot5BFOwqNvZJU55hxkGZ5eOMhb3qlpUoY=,tag:hC3xO2f02Z3MeCBTjVqeXA==,type:str]",
"id": "ENC[AES256_GCM,data:ZyLgC271/TY=,iv:ha3AKBFRunqAORhhLAPn9+Pc2GgjJGFMj2OfC18oQOQ=,tag:cMdE906vx71V2M7N/Z8elA==,type:str]",
"labels": {},
"name": "ENC[AES256_GCM,data:x2oi27SAXQ+DubE=,iv:KhbN8MtgnJuD5vvag/SU/M0N6v15iqv0CTR6DL6h+G8=,tag:M3qrMsBZxbR35x68Dbf9tg==,type:str]",
"public_key": "ENC[AES256_GCM,data:bdkeRVOohHcWcZUDfHXDLo57goSUUB89gVpp9v0JhXED6M225flCD+6KFt6oXZ9bwwvDUCDwKYkPXUnBL6BeCHgqtYIMixA6MwXmqE3BCH+6wsG1AM7u8e9nDdsIyoUdOL3ZH8nB,iv:keluzNzoT6jsRILC9Qmcae1huABjB0vNxpPLZC3QVJ0=,tag:5bL4jLTgJNnCS/RG/Yy35Q==,type:str]"
},
"sensitive_attributes": []
},
{
"index_key": "ENC[AES256_GCM,data:Qksf+iQlNA==,iv:pSPMci6ckgFsd+CGRspyZ32zNy0BZfY5xcX4+sKdV9Y=,tag:uVWZ1veFzyeCRKJvbujjuQ==,type:str]",
"schema_version": "ENC[AES256_GCM,data:7g==,iv:RcTlrj72jHqn/MrxXgoAOpsGmNgvQLwaTNfmKM3KEWo=,tag:15mjFTxMKt0msaKjQTwBEg==,type:float]",
"attributes": {
"fingerprint": "ENC[AES256_GCM,data:wCumbkcz8lHs+GVa1s4UM31dh/dC+yuwg++NT7o0sfxICkVrDvqADLeT+Q6Q9VM=,iv:Qlm4IX+OwxfRoaTwzw2U5Y3EhGuI38PM5R0NmwUxr8o=,tag:7bzQbjicX7dthI9D/yvLPQ==,type:str]",
"id": "ENC[AES256_GCM,data:GCLX1Jr+XTY=,iv:MoKRGa1VkQS76ayyOPyzaR4TebbkBvGJmahACs+TOOE=,tag:fafnovzWcfsB74IugWRqmA==,type:str]",
"labels": {},
"name": "ENC[AES256_GCM,data:a44N/B/3Mg==,iv:JjEQcuJkSE4YcbqOXZhbeyIIviJI1FuCd99YBAYc3yE=,tag:NWA9ZJrKB4ODkDNSuAGWSQ==,type:str]",
"public_key": "ENC[AES256_GCM,data:hUUsRJ209a9IEiUgic41LtB04rrJ8ymb2cKddm+zg5QUT9MPD4B/r33iVrcZoYAjv8mA2yrbRLmuTMAWGmddlOwwPcT25xqIYzgdSOLJKzV1UW9qyQEoegOu7bq1ei9yWG4=,iv:OvBp+NXwp5b2FmfpQe1lFOzEjxkzAK+NFDsydmN7MBE=,tag:rqkCxG/WhnwFDOEuQUaQdw==,type:str]"
},
"sensitive_attributes": []
}
]
}
],
"check_results": null,
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age1cl3d4wtrrqrgldmrzpu53q2mk60r7hrhrymsrwss8s57z4mdv9fst4a55h",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBycmVxOTNHa01yWlZsc0NT\nM3pSb0lEd1Y4bGh3ZFNocmpac2JxTi9uNWo0CmpBRTdyNzJqSnRKa3g4NGhQY1Zy\nU05qY1dEQWswMHE5czhVN2NsS2ZVS1kKLS0tICt2RG1ZNnk3QVZXNm1mMnBqdEw1\nSi9wOUdxR0M5amNIZEZSY3FzMG5PSk0K80/Ix1JHLSI9VLWgJju2mOI5G1NYed0n\n8kWfgQO3xqlr/zA+MJV/TqrRWem783OyMi1v4gkcKP9XdJ6qAxycOw==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2025-03-10T20:07:52Z",
"mac": "ENC[AES256_GCM,data:31HeCB8AZNsGxnBQrJDwpyVpfNV1XZ9X7AH/Mprfxrlyo0gV0Zk8KMe0aIq+LLB8Fpeeigf88J7mDK20nIO356vNbL4Yo4lPHvS3Fr5UZax+nWiMipca0lBNiyafV4W5+XqdQm0DzXe0NOX3p/UUZCjqg1NtD5rMx5C3qS0y914=,iv:fC7yV+Ht4i4AA9QIE5mhUXxoU+U6glwH/e9doBrakCg=,tag:zQat0syODG9Nm6vHlHjnvA==,type:str]",
"pgp": null,
"unencrypted_suffix": "_unencrypted",
"version": "3.9.4"
}
}

View file

@ -1,9 +0,0 @@
nodes = [
"01",
]
ssh_keys = {
"tine+pc" = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICXAlzwziqfUUb2qmFwNF/nrBYc5MNT1MMOx81ohBmB+ tine+pc@tjo.space"
"tine+mobile" = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAdPg/nG/Qzk110SBukHHEDqH6/3IJHsIKKHWTrqjaOh tine+mobile@tjo.space"
"tine+ipad" = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHrX2u82zWpVhjWng1cR4Kj76SajLJQ/Nmwd2GPaJpt1 tine+ipad@tjo.cloud"
}

View file

@ -1,21 +0,0 @@
variable "hcloud_token" {
sensitive = true
type = string
}
variable "dnsimple_token" {
sensitive = true
type = string
}
variable "dnsimple_account_id" {
type = string
}
variable "ssh_keys" {
type = map(string)
}
variable "nodes" {
type = list(string)
}