Commit Graph

50 Commits

Author SHA1 Message Date
benvin c068f56eca Merge pull request 'Add logarchiver repository' (#47) from benvin/logarchiver-repo into main
ci/woodpecker/push/apply Pipeline failed
Reviewed-on: #47
2026-07-27 21:48:24 +10:00
benvin 9cee6024d3 Add logarchiver repository
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
Registers the logarchiver Gitea repo: a k8s Go service that archives
raw logs from NATS JetStream to S3 as zstd-compressed, GPG-encrypted,
indexed objects, plus a CLI to search and retrieve them. It replaces the
Vector archiver leg of the centralized logging stack (argocd-apps #296)
with zstd compression, OpenPGP encryption keyed from the Vault GPG
secrets engine, and a ClickHouse-backed searchable index.

- Add config/git.unkin.net/unkin/repository/logarchiver.yaml modeled on
  the existing Go-service repos (encapi, cephrgw-operator): public repo,
  main default branch, squash merges, branch protection requiring the
  woodpecker pre-commit/test/build PR checks with benvin approval.

Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
2026-07-27 21:36:15 +10:00
unkinben bd7bef9f99 user: add gitea-vault-admin site-admin bot and one-time Vault KV seeding
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
Why: the vault-plugin-secrets-gitea engine needs a purpose-built Gitea
site-admin credential to mint and delete per-user tokens. Provision that
account and its Vault seed here so the credential is generated once and never
exposed. Ben asked that the password be written to Vault exactly once and
never updated afterwards.

Change:
- Add config/git.unkin.net/user/gitea-vault-admin.yaml: a local site-admin bot
  (admin: true, limited visibility, no org/repo creation).
- Extend the user module with an optional vault_seed_path/vault_seed_mount: when
  set, write the account's generated password to Vault KV as admin_username and
  admin_password via vault_kv_secret_v2, with lifecycle ignore_changes on
  data_json so the write is create-only and never churns (random_password
  already never regenerates). This keeps the seed stable and prevents a re-apply
  from overwriting a password later rotated out-of-band by rotate-root.
- Add the hashicorp/vault provider (module plus root generate block); it reads
  VAULT_ADDR and VAULT_TOKEN already exported by the Makefile k8s login.

Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
2026-07-27 19:26:24 +10:00
unkinben fd82876f5f Manage Gitea users; add teabot personality bot accounts
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
Add a data-driven 'user' config kind so Gitea accounts are declared as
config/git.unkin.net/user/<name>.yaml, mirroring the existing repository
and team kinds. Wire the yaml into a new modules/user submodule that
creates a gitea_user (provider go-gitea/gitea 0.7.0, already pinned).

The provider's user resource requires a password; generate a per-user
random_password so nothing sensitive is hardcoded and only a placeholder
lives in state (tokens come later from vault-plugin-secrets-gitea).

Provision teabot's implementer and reviewer personality accounts with a
conservative posture: not site admins, no org creation, no repo creation,
limited profile visibility.

Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
2026-07-27 17:22:19 +10:00
unkinben 4c5fe742f0 Add gitea vault engine + provider repositories
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
Create the Gitea repositories for the new vault-plugin-secrets-gitea
secrets engine and its companion terraform-provider-giteavaultsecret,
mirroring the rancher pair's settings.

- add config/git.unkin.net/unkin/repository/vault-plugin-secrets-gitea.yaml
- add config/git.unkin.net/unkin/repository/terraform-provider-giteavaultsecret.yaml

Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
2026-07-27 00:34:28 +10:00
benvin aa9b2eac80 Merge pull request 'Add teabot repository (file)' (#43) from benvin/teabot-repo-add into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #43
2026-07-26 23:22:20 +10:00
unkinben 9dfddcf4d3 Add teabot repository
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
teabot is a Go daemon that watches Gitea repos and dispatches one-shot
Claude Code sessions in Docker to work issues and review PRs.

Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
2026-07-26 23:19:44 +10:00
unkinben 42187f86d5 Add vault-tools repository
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
2026-07-26 23:18:08 +10:00
unkinben 3c53cf2722 Add encapic repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-07-25 09:45:26 +10:00
benvin c2f505ae84 Add pdbmux repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-07-24 23:20:49 +10:00
unkinben 4c9f3146ff Add terragrunt-enc repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
terragrunt-enc will be the single source of truth for encapi ENC data
(statuses, roles, node classifications), managed via Terraform/Terragrunt,
superseding Cobbler classification for Puppet.

- Add config/git.unkin.net/unkin/repository/terragrunt-enc.yaml (public,
  default_branch main, delete-branch-after-merge, squash merges).
- Protect main: block direct pushes, require the two Woodpecker PR status
  checks (pre-commit, plan), and whitelist benvin for approvals.
2026-07-24 23:04:03 +10:00
benvin b3b9caf457 Add terraform-provider-tomswallapi repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-07-19 22:18:44 +10:00
benvin fc77e2b150 Add tomswallapi repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-07-19 18:35:04 +10:00
benvin bb7c55af9b Add cephrgw-operator repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
The cephrgw-operator provisions Ceph RGW (S3) buckets and access keys from
Kubernetes CRDs via the Ceph manager dashboard API, and needs a Gitea repo
to host its code and run Woodpecker CI.

- Add config/git.unkin.net/unkin/repository/cephrgw-operator.yaml with the
  standard public-repo settings (squash merge, delete branch on merge) and
  main branch protection requiring the pre-commit/test/build PR checks.
2026-07-18 00:08:06 +10:00
benvin 51a95ea624 Merge pull request 'Add the openbao private fork repository' (#32) from benvin/add-openbao-repo into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #32
2026-07-17 23:36:04 +10:00
unkinben b92235571c Protect the openbao main branch
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Add branch protection to the openbao fork repository so main is protected: only
the owner may push directly and other changes must land via a pull request that
passes the fork build pipeline.

- Add branch_protection for main (whitelist-push to the owner; require the
  ci/woodpecker/pr/build status check on PRs); set squash as the default merge
2026-07-17 23:32:23 +10:00
unkinben 62557a6c00 git: add dns-updater repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
RFC2136 dynamic-DNS updater daemon (Go) that replaces the puppet dns-update
shell script. Squash merge, protected main with woodpecker build/test/pre-commit
status checks.
2026-07-17 23:16:48 +10:00
unkinben 50673f371a Add the openbao private fork repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Create the Gitea repository for the private OpenBao fork so its integration
branch (main) can be pushed and hosted on git.unkin.net.

- Add config/git.unkin.net/unkin/repository/openbao.yaml (private, default branch
  main, delete branch after merge)
2026-07-17 23:04:11 +10:00
unkinben 4af66baea4 Add terraform-provider-gpgvaultsecret repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
The Terraform provider for the gpg secrets engine needs a Gitea repo to hold
its source and run its Woodpecker PR/release pipelines.

- Add config/git.unkin.net/unkin/repository/terraform-provider-gpgvaultsecret.yaml
  (public, main default branch, squash-only, main branch protection gated on the
  pre-commit/build/test PR checks), mirroring the sibling
  terraform-provider-litellmvaultsecret repo.
2026-07-16 23:29:53 +10:00
unkinben 221bb24e90 Add passv Gitea repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
passv (a Vault-backed drop-in for pass) needs a Gitea repo to hold its source
and run its Woodpecker PR/release pipelines.

- Add config/git.unkin.net/unkin/repository/passv.yaml (public, main default
  branch, squash-only, main branch protection gated on the pre-commit/build/test
  PR checks), mirroring the sibling vault-plugin-secrets-gpg repo.
2026-07-16 22:16:17 +10:00
Ben Vincent bf0a604b9c Add vault-plugin-secrets-rancher + terraform-provider-ranchervaultsecret repos
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Creates the two Gitea repositories backing the new Rancher token secrets engine:
a Vault/OpenBao plugin and its Terraform provider.

- Add config/git.unkin.net/unkin/repository/vault-plugin-secrets-rancher.yaml
  (squash-only, main protected on pre-commit/build/test).
- Add config/git.unkin.net/unkin/repository/terraform-provider-ranchervaultsecret.yaml
  (same protection profile as the litellm provider repo).
2026-07-15 22:22:31 +10:00
unkinben 1055ea5c56 Add terraform-rancher repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Provision the terraform-rancher Gitea repo, which will manage Rancher's
Authentik OIDC auth (keycloakoidc AuthConfig) via the rancher2 provider,
mirroring the terraform-authentik pattern.
2026-07-15 21:17:47 +10:00
unkinben 3c16520b31 Add vault-plugin-secrets-gpg repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
The GPG/OpenPGP secrets engine needs a Gitea repo to hold its source and run
its Woodpecker PR/release pipelines.

- Add config/git.unkin.net/unkin/repository/vault-plugin-secrets-gpg.yaml
  (public, main default branch, squash-only, main branch protection gated on
  the pre-commit/build/test PR checks), mirroring the sibling
  vault-plugin-secrets-bind-tsig repo.
2026-07-15 07:40:22 +10:00
Ben Vin 5e8c4f6c88 Add benvin-utils Gitea repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Register a new public repo to host benvin-utils, a monorepo of small
single-purpose CLI tools (first tool: podgap) that share a common Go library.

- Add config/git.unkin.net/unkin/repository/benvin-utils.yaml (main default branch, delete branch after merge)
2026-07-12 21:54:48 +10:00
unkinben af552c9c01 Add vault-plugin-secrets-bind-tsig repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Declares the repo for a HashiCorp Vault / OpenBao secrets engine that
manages BIND TSIG keys via the bind-operator (static rotation + dynamic
creds). Mirrors the vault-plugin-secrets-litellm repo config.
2026-07-11 01:11:13 +10:00
unkinben 6a159dc06f Add jellyfin-ha container-build repo
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Adds the Gitea repository that manages the Docker container build for the
jellyfin-ha (HA transcoding) Jellyfin fork.

- Create unkin/jellyfin-ha (public, squash merges, delete branch on merge)
- Protect main; require the ci/woodpecker/pr/build check and docker-team approval
2026-07-05 22:26:06 +10:00
unkinben d51bfe055b chore: reset default owners
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
change whitelist approval list to use benvin via oidc instead of gitea
local account unkinben
2026-07-05 15:47:20 +10:00
unkinben 96f2fc0302 add encapi and terraform-provider-encapi repos
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Create the two Gitea repos backing the new Puppet ENC that replaces Cobbler:
- encapi: Go API + encapi-cli, Postgres-backed
- terraform-provider-encapi: Terraform provider for ENC roles/statuses/nodes

Both use main as default branch with squash-merge, delete-branch-after-merge,
and branch protection gated on the PR pipelines (pre-commit, test, build).
2026-07-04 23:21:27 +10:00
benvin 6b26a75149 Merge branch 'main' into benvin/delete-branch-after-merge-all
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-07-04 23:12:34 +10:00
unkinben bbfe0edf2f Enable delete-branch-after-merge on all repos
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Merged PR branches should be cleaned up automatically everywhere, for a
consistent workflow across the estate.

- Flip default_delete_branch_after_merge from false to true on the 10 repos
  that had it disabled.
- Add default_delete_branch_after_merge: true to the 3 repos that were missing
  the field (terraform-git, terraform-provider-litellmvaultsecret,
  vault-plugin-secrets-litellm).
2026-07-04 22:52:02 +10:00
unkinben 844fff8db6 Switch node-lookup repo to a main default branch
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
node-lookup is being set up with build/test/pre-commit CI and a main-based
workflow, so its Gitea repo config needs to match.

- Change default_branch from master to main.
- Rename the branch protection rule to main and update the required status
  checks to the new pipeline names (build, test, pre-commit) instead of the
  old lint/unit-tests contexts.
2026-07-04 22:50:52 +10:00
unkinben a4967d0bbf Add bind-operator repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Declares the bind-operator repo so Gitea provisions it for the new
Kubernetes operator that manages BIND9 DNS clusters.

- add config/git.unkin.net/unkin/repository/bind-operator.yaml with
  main as default branch, squash merge, delete-branch-after-merge, and
  branch protection requiring the pre-commit/test/build CI checks
2026-07-03 15:22:58 +10:00
benvin 773f734d8e Merge pull request 'Add vault-plugin-secrets-litellm and terraform-provider-litellm repos' (#18) from benvin/add-litellm-repos into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #18
2026-07-02 23:17:05 +10:00
unkinben 4495339979 Rename provider repo to terraform-provider-litellmvaultsecret
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Use a more specific name that reflects this is the Terraform provider for the
LiteLLM Vault/OpenBao secrets engine, not for LiteLLM itself.
2026-07-02 23:05:19 +10:00
unkinben 043e73424c Add vault-plugin-secrets-litellm and terraform-provider-litellm repos
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Provision two new Gitea repos for the LiteLLM dynamic secrets work: the
Vault/OpenBao secrets-engine plugin and its companion Terraform provider.

- Add config/.../repository/vault-plugin-secrets-litellm.yaml
- Add config/.../repository/terraform-provider-litellm.yaml
- Default branch main, squash-only merging (allow_* flags, since the
  go-gitea/gitea provider has no default_merge_style), and branch protection
  on main requiring pre-commit/build/test checks with Owners approval
2026-07-02 22:57:34 +10:00
unkinben 5cfbf60f65 Add branch protection for tomswall main branch
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-06-29 23:23:45 +10:00
unkinben dfbb90a7dc Add tomswall repository definition
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
New Go project for an nftables firewall manager — spiritual successor
to shorewall using google/nftables for direct kernel interaction.
2026-06-28 23:42:34 +10:00
unkinben 93175707eb feat: add terraform-sonarr, terraform-radarr, terraform-prowlarr repos
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-06-28 21:58:59 +10:00
unkinben a8d22b743a Add terraform-authentik repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Create Gitea repo for managing Authentik identity provider configuration via Terraform.
2026-06-28 00:57:07 +10:00
unkinben 0a3700db7a feat: add age-api repo
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-06-27 23:18:24 +10:00
unkinben f4b3f9cd08 feat: add required checks to terraform-provider-artifactapi
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
ensure the pre-commit, build and test ci tasks are performed in CI
2026-06-21 22:28:01 +10:00
unkinben b1684b7cf8 chore: change default branch to main
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
- update terraform-artifactapi default branch
2026-06-17 19:47:12 +10:00
unkinben e000c1132f feat: add branch protection
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
- add branch protection rules for docker repos
2026-06-13 14:49:17 +10:00
unkinben 85583a02ad Remove woodpecker module and fix branch protection dependency
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
- Remove woodpecker_repository module and provider (repos managed outside TF)
- Add removed block with destroy=false to drop state without destroying
- Add module.team to branch_protection depends_on to prevent race condition
- Add lifecycle ignore_changes for team permission (provider bug: API returns
  "none" but rejects it on write)
2026-06-12 22:26:19 +10:00
unkinben 571a9b2149 feat: add terraform-artifactapi repository
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Create the Gitea repo with branch protection on master requiring
pre-commit and plan CI checks before merge.
2026-06-12 21:56:46 +10:00
unkinben 236a94337a Enable branch protection and Woodpecker for forgebot repos
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
- Add forgebot team with unkinben and benvin members
- Enable branch protection on main for forgebot and forgebot-skills
- Team-based approval and merge whitelists
- Register both repos with Woodpecker CI
- CI status checks: pre-commit, test, build (forgebot); validate (skills)
2026-06-12 00:45:39 +10:00
unkinben 99e2b124a6 feat: import forgebot and container-agent repos
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-06-12 00:33:58 +10:00
unkinben bd60fb3669 Add forgebot and forgebot-skills repos with branch protection
- forgebot: branch protection on main with pre-commit, test, build CI checks
- forgebot-skills: branch protection on main with validate CI check
- Both repos enabled for Woodpecker CI
2026-06-12 00:32:57 +10:00
unkinben 1b127941f8 feat: add terraform-git
ci/woodpecker/pr/pre-commit Pipeline failed
ci/woodpecker/pr/plan Pipeline was successful
- add new repo
- change write -> none
2026-06-11 23:23:29 +10:00
unkinben c87b3ac471 feat: initial terraform-git project
Manage Gitea resources via Terraform/Terragrunt with YAML-driven config.

Resources managed:
- Organisation (unkin)
- 28 repositories with settings
- 6 teams with members
- 13 branch protection rules
- 9 Woodpecker CI repo activations
- Deploy key module (ready, no keys yet)

Config structure: config/<service>/<org>/<type>/<object>.yaml
Consul backend for state, Vault for auth tokens.
2026-06-10 23:45:41 +10:00