Commit Graph

43 Commits

Author SHA1 Message Date
17834b3aa7 update: rotate SSH access via cloud-init secret
Inject SSH public key through Terraform/cloud-init from Gitea secret so access can be rotated without rebuilding the template image.
2026-02-28 12:36:20 +00:00
6fada2f32a refactor: use direct tailscale auth-key enrollment
Stop writing auth keys to guest files and enroll nodes by running tailscale up directly via Proxmox guest agent with VM-name hostnames.
2026-02-28 12:12:58 +00:00
510ba707ad fix: stabilize tailscale enrollment without cloud-init rollback
Create /etc/tailscale before writing runtime key, add progress logging and unbuffered output in enroll script, and shorten guest-agent wait to fail faster when enrollment cannot run.
2026-02-28 12:09:40 +00:00
6fbc4dd80f fix: make tailscale enrollment resilient when guest agent is unavailable
Increase guest-agent wait window and treat agent-unavailable as warning by default, while keeping strict failure optional via TAILSCALE_ENROLL_STRICT secret.
2026-02-28 10:34:46 +00:00
f207f774de fix: parse terraform output JSON robustly in enroll step
Handle setup-terraform wrapper prefixes by decoding from first JSON object before reading VM outputs.
2026-02-28 02:21:57 +00:00
83d277d144 feat: enroll tailscale via Proxmox guest agent by VMID
Replace SSH/IP-based enrollment with Proxmox API guest-agent execution using Terraform outputs, set per-VM hostnames from resource names, and reset cloned tailscale state before join for unique node identities.
2026-02-28 02:14:39 +00:00
3335020db5 fix: make tailscale enrollment clone-safe and hostname-aware
Reset cloned tailscale state before first join, remove one-shot marker dependency, and allow workflow host entries in host=hostname format so nodes join with VM-aligned tailscale names.
2026-02-28 02:01:48 +00:00
a7f68c0c4b fix: tolerate extra output in destroy guard parser
Parse the first JSON object from terraform show output to avoid failures when extra non-JSON lines are present.
2026-02-28 01:23:07 +00:00
d1a7ccc98c chore: serialize Terraform workflows to prevent races
Add global workflow concurrency group with queueing enabled so plan/apply/destroy runs do not overlap and contend for shared remote state.
2026-02-28 01:17:51 +00:00
afe19041d9 fix: make destroy guard parse tfplan JSON robustly
Use terraform show with no-color and resilient JSON extraction to avoid parser failures when workflow output includes non-JSON noise.
2026-02-28 01:16:19 +00:00
c9be2a2fc8 fix: align VM boot disk and add Terraform safety workflows
Switch VM boot order/disks to scsi0 to match cloned NixOS template boot layout, add destroy guards to plan/apply workflows, and replace destroy workflow with a confirmed manual dispatch nuke flow that uses remote B2 state.
2026-02-28 01:10:31 +00:00
47f950d667 fix: update S3 backend config for Terraform init
Use non-deprecated s3 endpoint settings, switch to use_path_style, and trim newline characters from B2 credentials when generating backend.hcl in CI.
2026-02-28 00:56:12 +00:00
b0768db7a7 feat: store Terraform state in Backblaze B2
Configure an s3 backend and initialize Terraform in CI with backend config from Gitea secrets so state persists across runs and apply operations stay consistent.
2026-02-28 00:52:40 +00:00
595df12b3e update: automate tailscale enrollment from Gitea secrets
Add a first-boot tailscale enrollment service to the NixOS template and wire terraform-apply to inject TS auth key at runtime from secrets, so keys are not baked into templates or repo files.
2026-02-28 00:33:14 +00:00
e714a56980 update: switch Terraform to NixOS template workflow
- Point clone_template to nixos-template and trim cloud-init to Nix-safe hostname/DNS only
- Remove SSH/Tailscale cloud-init variables and workflow secret dependencies
- Add reusable NixOS template-base config with bootloader, Tailscale, fish, and utility packages
2026-02-28 00:06:25 +00:00
59fbbb07df fix: load static token id and validate token secret
- Store non-sensitive Proxmox token id in terraform.tfvars
- Inject only token secret via workflow-generated secrets.auto.tfvars
- Add variable validations for token id format and non-empty token secret
- Add workflow debug output for token secret length and selected token id
2026-02-27 21:00:44 +00:00
c3a0ef251c debug: show secret lengths to verify they are set 2026-02-27 20:56:41 +00:00
841abb8fe3 fix: create secrets.auto.tfvars dynamically in workflow
- Generate secrets.auto.tfvars file during workflow run
- Terraform automatically loads *.auto.tfvars files
- This bypasses any issues with TF_VAR_ environment variables
2026-02-27 20:48:41 +00:00
364dc6b35b fix: use TF_VAR_ prefix for token credentials
- Restore pm_api_token_id and pm_api_token_secret variables
- Use TF_VAR_pm_api_token_id and TF_VAR_pm_api_token_secret env vars
- This is the standard Terraform way to pass variables via environment
2026-02-27 20:43:39 +00:00
9c1476b6bf fix: use PM_API_TOKEN_ID/SECRET env vars directly
- Remove token from Terraform variables (provider reads from env)
- Update workflows to set PM_API_TOKEN_ID and PM_API_TOKEN_SECRET directly
- Provider now reads credentials from environment variables
2026-02-27 20:36:44 +00:00
c8b86c7443 fix: switch to API token authentication for Proxmox
- Replace user/password auth with API token auth
- Update provider config to use pm_api_token_id and pm_api_token_secret
- Update workflow secrets to use PM_API_TOKEN_ID and PM_API_TOKEN_SECRET
- Remove unused pm_user and proxmox_password variables
2026-02-27 20:02:22 +00:00
MichaelFisher1997
7d04a2c475 Worflow: changes vars 2025-04-18 11:42:05 +01:00
MichaelFisher1997
e04f10c5a3 Worflow: changes vars 2025-04-18 11:40:44 +01:00
MichaelFisher1997
0e7860bfe7 Worflow: changes vars 2025-04-18 11:35:01 +01:00
MichaelFisher1997
ba3fe8e7ff terraform apply 2025-04-18 11:01:55 +01:00
MichaelFisher1997
fcbd6a0b1d terraform fmt 2025-04-17 20:39:32 +01:00
MichaelFisher1997
437d7ab8d1 terraform fmt 2025-04-17 20:24:03 +01:00
MichaelFisher1997
ac2db5a1cf terraform fmt 2025-04-17 20:21:16 +01:00
MichaelFisher1997
ec07db08db terraform fmt 2025-04-17 19:21:23 +01:00
MichaelFisher1997
5a0f927532 terraform fmt 2025-04-17 17:08:31 +01:00
MichaelFisher1997
e968321c39 terraform fmt 2025-04-17 17:06:33 +01:00
MichaelFisher1997
36cba568f2 terraform fmt 2025-04-17 17:02:46 +01:00
MichaelFisher1997
c1c533f92d terraform fmt 2025-04-17 16:58:28 +01:00
MichaelFisher1997
9056832562 terraform apply 2025-04-17 11:10:02 +01:00
MichaelFisher1997
3f4375411b terraform apply 2025-04-17 11:02:23 +01:00
MichaelFisher1997
3b6cda4137 terraform plan 2025-04-17 03:10:10 +01:00
MichaelFisher1997
8f07732121 terraform plan 2025-04-17 03:04:14 +01:00
MichaelFisher1997
df091596c7 terraform plan 2025-04-17 02:40:19 +01:00
MichaelFisher1997
99e455f106 terraform plan 2025-04-17 02:33:27 +01:00
MichaelFisher1997
30c250c66a terraform plan 2025-04-17 02:31:15 +01:00
MichaelFisher1997
7b3c46248c terraform plan 2025-04-17 01:40:26 +01:00
MichaelFisher1997
a20ea678ec terraform plan 2025-04-17 01:38:40 +01:00
MichaelFisher1997
3f498e3673 actions init 2025-04-17 01:31:14 +01:00