a73x

scripts/deploy.env.example

Ref:   Size: 6.2 KiB   History

# eitri deploy config — sourced by scripts/deploy.sh (`make deploy`).
#
# Copy this to the location scripts/deploy.sh reads (default
# ~/eitri-deploy/deploy.env, override with $EITRI_DEPLOY_ENV) and fill in your
# fleet's values. This file is site-specific and may reference secrets — keep it
# OUT of the repo (deploy.env is gitignored).

# ── Control plane (local eitri-server) ────────────────────────────────────────
SERVER_BIN="$HOME/eitri-deploy/bin/eitri-server"   # where the running binary lives
SERVER_CONFIG="$HOME/eitri-deploy/server.json"     # --config passed to it
SERVER_LOG="$HOME/eitri-deploy/logs/server.log"    # relaunch appends here
SERVER_URL="http://127.0.0.1:8080"                 # http_listen, for health checks + console callback base

# ── Console sign-in / boot-gate credentials ───────────────────────────────────
# The admin token is gone: the server authenticates the console via OIDC, and
# the boot-gate signs in as the deploy machine identity in the bundled eitri-oidc
# issuer (installed + configured by deploy.sh on this box) to mint a short-lived
# PAT that proves the sign-in chain. The `default` tenant is human-owned (the
# operator claimed it on first sign-in), so the VM-lifecycle half of the gate
# runs on an operator-minted PAT read from CI_PAT_FILE instead. Defaults shown;
# the password file is generated on first deploy, and CI_PAT_FILE is an optional
# override for where you saved the console "deploy" PAT.
# CI_USER="deploy@eitri.local"
# CI_PASSWORD_FILE="$HOME/eitri-deploy/oidc/deploy-password"
# CI_PAT_FILE="$HOME/eitri-deploy/oidc/deploy-pat"

# ── Hosts (remote eitri-agent) ────────────────────────────────────────────────
# Space-separated list of ssh targets, each "user@host[:port]" (port defaults 22).
# The branch gate's fleet is nested VMs on this workstation: run
# `scripts/devhost.sh create` and paste the AGENT_HOSTS line it prints. Real
# hardware gates pre-release tags on stg instead (deploy/server/README.md), so a
# hosted outage can never fail the fastest, most-run check in the project.
AGENT_HOSTS="ubuntu@192.168.122.50"
AGENT_BIN="/usr/local/bin/eitri-agent"             # install destination on each host
AGENT_STATE_DIR="/var/lib/eitri-agent"
# Agent logs live in journald once the systemd unit is adopted:
#   journalctl -u eitri-agent

# Agent launch flags shared by all hosts.
CH_BIN="/usr/local/bin/cloud-hypervisor"
# FIRMWARE is the guest firmware path ON each host. UEFI (CLOUDHV.fd) boots the
# guest's own GRUB -> guest kernel+initrd from disk (modern images boot).
FIRMWARE="/usr/share/eitri/CLOUDHV.fd"
# FIRMWARE_SRC (optional): a LOCAL firmware file to scp+install to $FIRMWARE on
# every host during deploy. Set it to roll a firmware change with the deploy;
# leave unset to keep whatever firmware already exists on each host.
# FIRMWARE_SRC="$HOME/.cache/eitri/CLOUDHV.fd"

# ── SSH-CA gate boot-check (optional) ─────────────────────────────────────────
# After proving the guest boots (serial console), the boot-gate also proves
# guest ACCESS by reaching the VM through eitri's SSH-CA jump gate and running a
# command as the guest user — a hard gate. It self-signs a short-lived cert with
# a smoke user CA (load-or-created below) that it registers with the tenant.
# SMOKE_GATE defaults to the server's ssh_listen; set it if that host:port isn't
# dialable from the deploy host (its host must match the gate's host-cert
# principal). Leave the rest unset to use the defaults shown.
# SMOKE_GATE="127.0.0.1:2223"
# SMOKE_VM_USER="ubuntu"
# SMOKE_USER_CA_FILE="$HOME/eitri-deploy/smoke_user_ca"

# ── Integration coverage (optional) ───────────────────────────────────────────
# The fleet is always deployed coverage-instrumented; the boot-gate flushes and
# merges server+agent coverage into ./coverage/integration. These override where
# each binary writes its raw GOCOVERDIR data. SERVER_GOCOVERDIR is local; the
# AGENT one is a path ON each host. Defaults shown — leave unset to use them.
# SERVER_GOCOVERDIR="$PWD/coverage/server"
# AGENT_GOCOVERDIR="$AGENT_STATE_DIR/coverage"

# Optional overrides (leave unset to use the agent's built-in defaults).
# TOMBSTONE_GRACE — how long a deleted VM lingers (stopped) before destroy.
#   Agent default is 5m; lower it for a snappier dashboard teardown.
# TOMBSTONE_GRACE="30s"
# VANISH_GRACE — grace for a VM that vanished WITHOUT a tombstone (agent default 1h).
# VANISH_GRACE="1h"
# AGENT_EXTRA_FLAGS — any additional eitri-agent flags, appended verbatim.
# Host resource caps live here (0/unset = offer the whole machine): reserve
# headroom by capping the CPU/mem/disk the agent advertises AND enforces.
# AGENT_EXTRA_FLAGS="--max-vcpus 8 --max-mem-mb 16384 --max-disk-gb 200"

# ── eitri.sh site image (make site-image) ─────────────────────────────────────
# Registry/repo for the static-site image; tagged with the release version.
# Required for `make site-image` (everything else in this file ignores it).
# SITE_IMAGE="registry.example.com/eitri-site"
# Image platform for the site image; set to your cluster's node arch.
# SITE_PLATFORM="linux/arm64"
# Guest firmware ships inside dist/<version> (manifested, sha-pinned) rather
# than staged by the site image. `make release` reads FIRMWARE_SRC — a local
# CLOUDHV.fd to mirror in — defaulting to $HOME/.cache/eitri/CLOUDHV.fd if
# present; see scripts/release.sh.

# ── eitri-server production image (make server-image) ─────────────────────────
# Registry/repo for the hosted control-plane image; tagged with the release
# version. Required for `make server-image` (everything else here ignores it).
# The image is arm64 only — the pod is pinned to the cluster's arm64 node.
# SERVER_IMAGE="registry.example.com/eitri-server"