Commit Graph

13 Commits

Author SHA1 Message Date
unkinben c6df3a7619 feat: make puppet-initial CA endpoint configurable, default to k8s puppetca (#171)
ci/woodpecker/push/deploy-fedora42 Pipeline was successful
ci/woodpecker/push/deploy-fedora44 Pipeline was successful
ci/woodpecker/push/deploy-fedora43 Pipeline was successful
ci/woodpecker/push/deploy-almalinux9 Pipeline was successful
ci/woodpecker/push/deploy-almalinux8 Pipeline was successful
## Why

The `puppet-initial` firstrun bootstrap RPM hardcoded the legacy Consul-discovered CA endpoint `puppetca.query.consul:8140`. That VM-era CA is being replaced by the in-cluster puppetserver CA service `puppetca.k8s.syd1.au.unkin.net`. Rather than swap one hardcoded host for another, the endpoint is now configurable so kickstart can override it per host.

Verified the new service serves the same Puppet CA API on the same port: `https://puppetca.k8s.syd1.au.unkin.net:8140/puppet-ca/v1/certificate/ca` returns HTTP 200 with a valid Puppet CA cert.

## Changes

- Default the CA host to `puppetca.k8s.syd1.au.unkin.net` (still port `8140`, same `/puppet-ca/v1/certificate/ca` path).
- Bootstrap script reads `PUPPETCA_HOST` / `PUPPETCA_PORT` from the environment, falling back to the defaults, and uses them for both the CA cert fetch and the `--server` of the initial noop registration run.
- Add `EnvironmentFile=-/etc/sysconfig/puppet-initial` to the systemd unit so kickstart `%post` can drop overrides in there.
- Ship a commented example config at `/etc/sysconfig/puppet-initial` as `%config(noreplace)`.
- Add a package README documenting the override, with a kickstart `%post` example.
- Bump el8/el9 build version `1.0.3` -> `1.0.4` so a new RPM is published (dedup skips identical filenames).

Note: the run loop still targets `puppet.query.consul` (the compile master, a separate host from the CA) — intentionally left unchanged; scope here is the CA endpoint only.

## Validation

- `make test` — 72 passed
- pre-commit (metadata jsonschema, yamllint, shebang/executable checks) — all pass
- Local `nfpm pkg` build: RPM assembles; `/etc/sysconfig/puppet-initial` correctly listed by `rpm -qcp` as a config file; packaged script carries the new default + env wiring.

https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
---------

Co-authored-by: Ben Vincent <neotheo@gmail.com>
Reviewed-on: #171
Co-authored-by: Ben Vincent <ben@unkin.net>
Co-committed-by: Ben Vincent <ben@unkin.net>
2026-07-29 21:36:47 +10:00
unkinben 8a3a585f8c fix/distro-aware-package-check (#164)
ci/woodpecker/push/deploy-fedora43 Pipeline was successful
ci/woodpecker/push/deploy-fedora44 Pipeline was successful
ci/woodpecker/push/deploy-fedora42 Pipeline was successful
ci/woodpecker/push/deploy-almalinux8 Pipeline was successful
ci/woodpecker/push/deploy-almalinux9 Pipeline was successful
Reviewed-on: #164
2026-05-17 23:43:35 +10:00
unkinben b18e34c905 feat: additional pre-commit checks
Build / build-8 (pull_request) Successful in 10s
Build / build-9 (pull_request) Successful in 10s
- add all precommit checks from pre-commit's hooks repo
- ensure scripts with shebangs are executable
2026-03-07 17:04:48 +11:00
unkinben 1f1b1cfe32 chore: update urls to artifactapi
Build / build-8 (pull_request) Successful in 2m16s
Build / build-9 (pull_request) Successful in 4m23s
- change github urls to artifactapi
- change gitea urls to artifactapi
- change scripts in nfpm to use full path
- update unrar to 7.12
2026-01-17 20:21:04 +11:00
unkinben e09d0c4bc6 chore: update build tool, puppet-initial
- update build tool with github_release_pattern
- update puppet-initial to reduce impact on upgrades
2026-01-17 15:18:26 +11:00
unkinben 182641132a refactor: modernise RPM builder with Python tooling v2
Build / build-8 (pull_request) Successful in 8s
Build / build-9 (pull_request) Successful in 9s
- Migrate from legacy shell-based build system to modern Python tooling
- Update all metadata.yaml files to new schema with per-distro builds
- Standardise build scripts with curl -L, envsubst, and error handling
- Convert nfpm.yaml templates to use environment variable substitution
- Update Dockerfile to accept all package metadata as build arguments
- Modernise Makefile to use new Python build tool commands
- Update CI workflow to use tools/build instead of make
2025-11-30 20:27:05 +11:00
unkinben b3ba980f9f refactor: modernise RPM builder with Python tooling
Build / build-8 (pull_request) Failing after 7s
Build / build-9 (pull_request) Failing after 8s
- Replace Makefile version/release file system with metadata.yaml only
- Add Python build automation (./tools/build) with Gitea API integration
- Add GitHub release updater (./tools/update-gh) for version management
- Centralize Dockerfiles into single parameterized Dockerfile
- Remove 54+ individual package Dockerfiles and version directories
- Update Makefile to use new Python tooling
- Add GITEA_API_TOKEN validation to prevent duplicate builds
- Support both explicit version/release args and metadata.yaml reading
2025-11-30 03:39:58 +11:00
unkinben 989c8e9ea8 feat: add metadata.yaml files for all packages
Build / build-9 (pull_request) Successful in 42s
Build / build-8 (pull_request) Successful in 1m43s
Add simplified metadata structure for all 41 packages containing:
- Package name, version, and release number
- GitHub repository for packages with GitHub releases
- Build configuration for el/8 and el/9 distributions

This metadata enables future automation for version checking and package building across different distributions.
2025-09-29 22:11:03 +10:00
unkinben 325b830952 refactor: standardize Dockerfile and build script structure
Standardize all RPM packages to use a consistent build pattern:
- Simple Dockerfiles that copy resources/ and call build.sh
- Move all build logic to resources/build.sh scripts
- Consolidate nfpm.yaml and scripts into resources/ directory
- Update base image to almalinux9-rpmbuilder for consistency

Changes:
- Refactored 37 packages total (simple + complex)
- HashiCorp tools: consul, vault, terraform, terragrunt, packer, nomad, nomad-autoscaler
- Development tools: g10k, etcd, nfpm, ruff, uv, unrar, nzbget, boilerplate
- VictoriaMetrics: vlutils, vmutils, victoria-logs
- Network tools: cni-plugins, consul-cni, unkin-ca-certificates
- Jellyfin suite: jellyfin-web, jellyfin-server, jellyfin-ffmpeg-bin
- System packages: puppet-initial, incus

This standardization improves maintainability and consistency across
the entire RPM build system while preserving all existing functionality.
2025-09-28 22:17:46 +10:00
unkinben b8b181e684 fix: resolve dependency errors
Build / build-9 (pull_request) Successful in 22s
Build / build-8 (pull_request) Successful in 1m49s
- unkin-ca-certificates fails during kickstart as its required packages are missing
- puppet-initial doesnt need to include unkin-ca-certificates
2025-07-13 21:04:14 +10:00
unkinben 91154d46ad feat: update urls
Build / build-8 (pull_request) Successful in 31s
Build / build-9 (pull_request) Successful in 1m59s
- update docker images to use git.unkin.net
- update path to save rpms to git.unkin.net
2025-07-06 17:20:48 +10:00
unkinben 18a5b33eb2 feat: added hostname setting to puppet-initial
Build / build-9 (pull_request) Successful in 47s
Build / build-8 (pull_request) Successful in 1m17s
- bumped release
- set hostname to be set in /etc/sysconfig/network and with hostnamectl
2025-04-24 21:36:47 +10:00
unkinben c22329641e feat: add puppet-initial package
Build / build-9 (pull_request) Successful in 47s
Build / build-8 (pull_request) Successful in 25m22s
- deploy the puppet-initial service
- deploy the puppet-initial script
- prepare puppet service for puppet-initial
- ensure cert installed
2025-04-23 20:25:13 +10:00