Files
oswald-infra/butane/example.yaml
T
nickandClaude Opus 5 90a2753a2a Run oswald-runner, ai and oswl-connector as Flatcar VMs
Replaces the Debian VM that hosted the Gitea Actions runner and adds two
new hosts on goose, all provisioned by Ignition instead of cloud-init:

- oswald-runner: Gitea Actions runner, keeping its registration in
  /var/lib/oswald_runner on disk rather than running ephemeral, which was
  leaving stale offline runners behind whenever a job was interrupted.
- ai: LiteLLM proxy and the Gitea MCP server.
- oswl-connector: tailscaled against headscale, advertising 192.168.7.0/24
  and itself as an exit node.

Their registration tokens and keys come from Infisical through the new
butane_vars plumbing, so nothing secret is committed -- but each one does
land in plaintext in the rendered Ignition snippet on the node, which is
the tradeoff for having no cloud-init here.

The provider gains an ssh block on both nodes because Proxmox has no API
for uploading snippets. That, the snippets content type, and the headscale
preauth key all have to be set up by hand first; flatcar-todo.md has the
steps and the reasoning behind the awkward parts.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-22 10:02:23 +00:00

37 lines
1.1 KiB
YAML

# Example extra Butane config for a Flatcar VM. Reference it from tfvars with
# `butane_file = "butane/<name>.yaml"`. It is merged into the base config the
# module generates (hostname, core + ansible users with the shared SSH key).
# Applied by Ignition on FIRST BOOT only: to change a running VM, edit this
# file and taint the VM so it is rebuilt from the image.
variant: flatcar
version: 1.0.0
systemd:
units:
# Example: run a container as a service.
- name: hello.service
enabled: true
contents: |
[Unit]
Description=Hello container
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker rm --force hello
ExecStart=/usr/bin/docker run --name hello --rm -p 8080:80 nginx:alpine
ExecStop=/usr/bin/docker stop hello
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
storage:
files:
# Example: a file on disk.
- path: /etc/motd
mode: 0644
contents:
inline: |
Managed by OpenTofu + Ignition. Config changes require a rebuild.