Commit Graph

99 Commits

Author SHA1 Message Date
unkinben 0385d2a1ef vault provider: skip child token creation in CI
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-27 21:52:24 +10:00
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 99b13d81bc Merge pull request 'user: add gitea-vault-admin site-admin bot with one-time Vault KV seeding' (#46) from benvin/gitea-vault-admin into main
ci/woodpecker/push/apply Pipeline failed
Reviewed-on: #46
2026-07-27 21:47:31 +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
benvin 96092cf7a1 Merge pull request 'Manage Gitea users; add teabot personality bot accounts' (#45) from benvin/teabot-users into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #45
2026-07-27 17:33:25 +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
benvin ee08fd5585 Merge pull request 'Add gitea vault engine + provider repositories' (#44) from benvin/gitea-vault-repos into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #44
2026-07-27 00:40:20 +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
benvin 3f39229c29 Merge pull request 'Add vault-tools repository' (#41) from benvin/vault-tools-repo into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #41
2026-07-26 23:19:36 +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
benvin 570b7a6cf9 Merge pull request 'ci: fetch vault from artifactapi instead of dnf install' (#39) from benvin/ci-vault-install-speedup into main
ci/woodpecker/push/apply Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
Reviewed-on: #39
2026-07-25 09:48:12 +10:00
benvin 16eb029c2e Merge pull request 'Add encapic repository' (#40) from benvin/encapic-repo into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #40
2026-07-25 09:47:03 +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
unkinben c2805d9196 Escape VAULT_VERSION for woodpecker YAML substitution ($$ -> shell)
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-07-25 00:32:19 +10:00
benvin db4c5ad4fc ci: fetch vault from artifactapi instead of dnf install
ci/woodpecker/pr/plan Pipeline failed
ci/woodpecker/pr/pre-commit Pipeline was successful
CI installed vault by shelling out to `dnf install vault -y`, which reads
metadata for every enabled repo (appstream/baseos/crb/epel/ha) and downloads
the 169MB vendored vault RPM from the unkin repo on every pipeline run
(~39s per plan/apply job).

- Replace the dnf install with a pinned curl of the upstream vault zip from
  the artifactapi hashicorp-releases remote proxy, extracted with python3 to
  /usr/local/bin/vault.
- Pin the version via a VAULT_VERSION env var (1.20.0).
2026-07-25 00:27:20 +10:00
benvin 36451b08ad Merge pull request 'Add pdbmux repository' (#38) from benvin/pdbmux-repo into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #38
2026-07-24 23:22:34 +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
benvin 645f693b48 Merge pull request 'Add terragrunt-enc repository' (#37) from benvin/terragrunt-enc-repo into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #37
2026-07-24 23:07:31 +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 25d5f1a49f Merge pull request 'Add terraform-provider-tomswallapi repository' (#36) from benvin/add-tf-provider-tomswallapi into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #36
2026-07-19 23:53:08 +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 1198063e0b Merge pull request 'Add tomswallapi repository' (#35) from benvin/add-tomswallapi-repo into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #35
2026-07-19 21:14:35 +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 d9a4396674 Merge pull request 'Add cephrgw-operator repository' (#34) from benvin/add-cephrgw-operator-repo into main
ci/woodpecker/push/apply Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Reviewed-on: #34
2026-07-18 08:27:40 +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
benvin 0e2082e6c1 Merge pull request 'git: add dns-updater repository' (#33) from benvin/add-dns-updater-repo into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #33
2026-07-17 23:18:13 +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
benvin c1a7b50ab0 Merge pull request 'Add terraform-provider-gpgvaultsecret repository' (#31) from benvin/add-tf-provider-gpg-repo into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #31
2026-07-16 23:30:57 +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
benvin 8b07e66168 Merge pull request 'Add passv Gitea repository' (#30) from benvin/add-passv-repo into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #30
2026-07-16 22:21:24 +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
benvin acb17c1d7c Merge pull request 'Add Rancher token secrets-engine repos (plugin + terraform provider)' (#29) from benvin/vault-plugin-secrets-rancher into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #29
2026-07-15 23:58: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
benvin 312603d714 Merge pull request 'Add terraform-rancher repository' (#28) from benvin/terraform-rancher into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #28
2026-07-15 21:23:57 +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
benvin e5c9fbd17d Merge pull request 'Add vault-plugin-secrets-gpg repository' (#27) from benvin/add-gpg-plugin-repo into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #27
2026-07-15 20:53:33 +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
benvin b23829cdfb Merge pull request 'Add benvin-utils Gitea repository' (#26) from benvin/benvin-utils into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #26
2026-07-12 22:01:20 +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
benvin 1ad7a85867 Merge pull request 'Add vault-plugin-secrets-bind-tsig repository' (#25) from benvin/add-bind-tsig-plugin-repo into main
ci/woodpecker/push/apply Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Reviewed-on: #25
2026-07-11 02:00:53 +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
benvin 85057e02d8 Merge pull request 'Add jellyfin-ha container-build repo' (#24) from benvin/jellyfin-ha into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #24
2026-07-05 22:42:33 +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
benvin 2f794b2e9b Merge pull request 'chore: reset default owners' (#23) from benvin/merge-approval into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #23
2026-07-05 16:40:41 +10:00