A separate, isolated Pulumi project (peer to bootstrap/provision/offsite-backup) that provisions runner VM(s) on a libvirt host and registers Forgejo Actions runners with a distinct `fenced` label — so ecosystem/untrusted jobs run OFF the forge VM. Decoupled ON PURPOSE: a @pulumi/libvirt provider dials the runner host on every up/refresh, so keeping it in `bootstrap` would make the foundation undeployable/ unrefreshable whenever the host (crunchy01) is down or unreachable (the Terraform coupling trap). As its own stack, bootstrap never imports it — foundation ops never touch crunchy01, and this stack's health is independent. One-way dependency: it mints a runner token FROM the forge, i.e. runs after the foundation stands. Codifies what was built + hardened by hand this session (runners/README.md): Ubuntu VM on the LAN bridge (docker + qemu-guest-agent via cloud-init), the kube-router-proof FORWARD timer, and runner registration. Typechecked; the live `pulumi up` cutover from the hand-built VM is the remaining validation step. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
12 lines
583 B
YAML
12 lines
583 B
YAML
name: foundation-runners
|
|
description: >-
|
|
Step-0-after-foundation — the fenced Forgejo Actions runner fleet on libvirt
|
|
hosts (e.g. crunchy01), as an ISOLATED stack. Decoupled from `bootstrap` on
|
|
purpose: a @pulumi/libvirt provider dials the runner host on every up/refresh,
|
|
so keeping it here (never imported by bootstrap) means foundation ops never
|
|
require — and are never blocked by — the runner host. One-way dependency: needs
|
|
the forge up to mint a runner token (i.e. runs after the foundation stands).
|
|
runtime:
|
|
name: nodejs
|
|
options:
|
|
packagemanager: bun
|