Files
computer-playbook/docs/contributing/environment/variables.md
T
kevinveenbirkenbachandClaude Opus 4.7 eb45f0ffaf feat(cache): inner-build override + TTL env-var + SPOT docs
Extend the local cache stack with three independent capabilities:

1. Inner-`dockerd` build coverage for HTTP-only package mirrors.
   `roles/sys-svc-compose/files/compose.py` (the runner's `compose`
   wrapper) auto-generates a transient `compose.cache.override.yml`
   per app when `INFINITO_PACKAGE_CACHE_FRONTEND_IP` is exported. The
   override pins `build.extra_hosts` for `deb.debian.org`,
   `archive.ubuntu.com`, and `security.ubuntu.com` to the frontend.
   `pull.py` now delegates to the wrapper so build/pull operations see
   the same `-f` set the wrapper auto-detects. nginx in the frontend
   gains a port-80 listener with path rewrites for those hostnames,
   and `package.sh` registers two new Nexus proxies
   (`apt-debian-security`, `apt-ubuntu-security`) for the security
   suites whose upstream URL prefix differs from the main archive.

   Alpine is intentionally excluded from the inner-build extra_hosts:
   3.18+ defaults to HTTPS, and inner-`dockerd` build containers do
   not import the frontend CA. Routing apk through the frontend would
   trip TLS verification.

2. General cache freshness env-var. `scripts/meta/env/cache/package.sh`
   exports `INFINITO_PACKAGE_CACHE_MAX_AGE_MIN` (default `129600`,
   i.e. 90 days). The bootstrap helper consumes it for every Nexus
   proxy's `contentMaxAge`, `metadataMaxAge`, and
   `negativeCache.timeToLive`, replacing the previous 1440-minute
   literal. Lower the value when chasing fast-moving upstreams.

3. SPOT cache documentation at `docs/contributing/environment/cache.md`.
   `compose.yml.md`, `variables.md`, the per-service READMEs, and
   `requirements/012-...` now link to it instead of restating the
   stack's behaviour. Net documentation lines drop substantially while
   the cache page becomes the single user-facing reference.

Also: code-comment cleanup per `docs/contributing/documentation.md`
guidelines across all touched .py / .sh / .yml files. Multi-paragraph
docstrings, banner separators, and restate-the-obvious comments are
removed; one-line WHY comments remain where the rationale is not
already visible in the code.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-30 01:08:41 +02:00

13 KiB

Environment Variables

This page documents the repository-owned environment variables that drive the development stack, local deploy helpers, and container bootstrap flow.

App-specific container variables live next to the role that owns them, usually in roles/<role>/templates/env.j2, roles/<role>/templates/bootstrap.env.j2, or roles/<role>/templates/playwright.env.j2.

Workflow Inputs

Variable Purpose Default / values Defined in
APPS Single-app deploy target used by fresh-kept-app.sh, reuse-kept-app.sh, and fresh-purged-app.sh. Required for single-app flows. fresh-kept-app.sh, fresh-purged-app.sh, reuse-kept-app.sh, entity.sh
SERVICES_DISABLED Space- or comma-separated list of compose service names to disable after inventory creation. Sets enabled: false and shared: false for every matching service across all applications. Use this to reduce resource usage on low-hardware machines. Example: SERVICES_DISABLED="oidc ldap matomo". Empty by default (no services disabled). services_disabler.py
CMD One-off shell command passed to make exec to run non-interactively inside the dev container. When unset, make exec opens an interactive shell. Optional; no default. container.sh
DEBUG Enables debug behavior in local deploy flows. Boolean; defaults vary by helper. fresh-kept-app.sh, reuse-kept-app.sh, reuse-kept-all.sh
DISTROS Space-separated distro matrix used by CI input resolution. arch debian ubuntu fedora centos defaults.sh, input.sh
INFINITO_CONTAINER Name of the running dev container. Derived from INFINITO_DISTRO, set automatically by defaults.sh; never set manually, never re-derived elsewhere. Consumers (compose.yml, deploy CLI, purge/exec scripts) read this env strictly. Callers that change INFINITO_DISTRO mid-process MUST re-source defaults.sh to refresh. Always infinito_nexus_${INFINITO_DISTRO} (derived). defaults.sh
INFINITO_DISTRO Selected distro flavor for the dev stack and image tags. debian; accepted values are arch, debian, ubuntu, fedora, centos. defaults.sh, fresh-kept-all.sh, fresh-kept-app.sh, fresh-purged-app.sh, reuse-kept-all.sh
INVENTORY_DIR Inventory directory used by local deploy helpers. The canonical inventory file inside it is devices.yml. $HOME/inventories/localhost when resolved automatically. inventory.sh, resolve.sh, fresh-kept-all.sh, fresh-kept-app.sh, fresh-purged-app.sh, reuse-kept-app.sh, reset inventory script, reuse-kept-all.sh
LIMIT_HOST Ansible limit pattern for local deploys. localhost fresh-kept-all.sh, fresh-kept-app.sh, fresh-purged-app.sh, reuse-kept-app.sh, reuse-kept-all.sh
PYTHON Python executable used by helper scripts. python3 or the active venv python. python.sh, fresh-kept-all.sh, fresh-kept-app.sh, fresh-purged-app.sh, reuse-kept-app.sh, reuse-kept-all.sh
TEST_DEPLOY_TYPE Inventory and deploy flavor. server; accepted values are server, workstation, universal. defaults.sh, input.sh, fresh-kept-all.sh, fresh-purged-app.sh, reuse-kept-app.sh, reset inventory script, reuse-kept-all.sh
TEST_PATTERN Glob for test discovery. test*.py defaults.sh
WHITELIST Optional app-discovery filter. Empty by default. input.sh, fresh-kept-all.sh

Runtime And Tooling

Variable Purpose Default / values Defined in
IS_WSL2 Indicates whether the current host looks like WSL2. true or false. runtime.sh
NIX_CONFIG Optional pass-through Nix configuration used by build and compose flows. Optional. github.sh, compose.yml
PIP Pip command derived from PYTHON. ${PYTHON} -m pip python.sh
PYTHONPATH Python import path for helper scripts. . python.sh
RUNNING_ON_ACT Runtime flag for act-based workflows. true or false. runtime.sh
RUNNING_ON_GITHUB Runtime flag for GitHub Actions / CI workflows. true or false. runtime.sh
VENV Effective virtualenv path used by the repo. Active venv or ${VENV_BASE%/}/${VENV_NAME}. python.sh
VENV_BASE Base directory used to resolve virtualenv paths. /opt/venvs outside an active venv. python.sh
VENV_FALLBACK Fallback virtualenv path when no venv is active. ${VENV_BASE%/}/${VENV_NAME} python.sh
VENV_NAME Name of the repo virtualenv. infinito python.sh
INFINITO_ENV_DEFAULTS_LOADED Loader guard for defaults resolution. Internal 1 flag. defaults.sh
INFINITO_ENV_GITHUB_LOADED Loader guard for GitHub/Act resolution. Internal 1 flag. github.sh
INFINITO_ENV_INVENTORY_LOADED Loader guard for inventory resolution. Internal 1 flag. inventory.sh
INFINITO_ENV_LOADED Loader guard for scripts/meta/env/all.sh. Internal 1 flag. all.sh
INFINITO_ENV_PYTHON_LOADED Loader guard for Python resolution. Internal 1 flag. python.sh
INFINITO_ENV_RUNTIME_LOADED Loader guard for runtime resolution. Internal 1 flag. runtime.sh

Compose And Container

Variable Purpose Default / values Defined in
DNS_IP CoreDNS IP used by the CI compose profile. Provided by the compose environment. compose.yml
DOMAIN Base domain for the local compose stack. Provided by the compose environment. compose.yml
GIT_SSL_NO_VERIFY Keeps Git SSL verification enabled inside the infinito container. 0 compose.yml
INFINITO_COMPILE Enables rebuild mode in scripts/docker/entry.sh. 1 builds, 0 skips build. github.sh, compose.yml, entry.sh
INFINITO_COMPILE_SILENCE Suppresses rebuild output when INFINITO_COMPILE=1. 1 hides build logs. entry.sh
INFINITO_CONTAINER_NO_CA Disables CA injection in the container wrapper. Truthy values disable CA mounting. container.py
INFINITO_DOCKER_MOUNT Mount point for the Docker data root inside the stack. /var/lib/docker github.sh, compose.yml
INFINITO_DOCKER_VOLUME Host-side Docker volume or mount used by the stack. /mnt/docker on GitHub, docker in Compose fallback. github.sh, compose.yml
INFINITO_GHCR_MIRROR_PREFIX Prefix used when resolving GHCR mirror image names. mirror github.sh, mirrors.py
INFINITO_IMAGE Full container image reference used by Compose and deploy tooling. infinito-${INFINITO_DISTRO} when unset. github.sh, compose.yml, compose.py
INFINITO_IMAGE_REPOSITORY Repository path used to resolve image names and tags. Derived from repo metadata when not set. github.sh, build.sh, cleanup.sh
INFINITO_IMAGE_TAG Tag portion of the image reference. latest on GitHub; otherwise unset. github.sh
INFINITO_NO_BUILD Skips docker compose up image building when set to 1. 0 or 1. github.sh, compose.py
INFINITO_OUTER_NETWORK_MTU Overrides the Docker bridge MTU used by the local compose stack. The dev tooling SHOULD auto-detect this from /etc/docker/daemon.json; set it explicitly only when auto-detection is unavailable or incorrect. Unset by default; accepted values are integer MTUs in the valid Docker host range. compose.yml, compose.py, network.py
INFINITO_PATH Working directory selected inside the infinito container. Computed at container start. entry.sh
INFINITO_PULL_POLICY Docker Compose pull policy. always on GitHub; Compose default elsewhere. github.sh, compose.yml
INFINITO_REGISTRY_CACHE_*, INFINITO_PACKAGE_CACHE_* Cache-stack variables (registry-cache, package-cache, package-cache-frontend). For purpose, defaults, and consumers, see cache.md. see cache.md registry.sh, package.sh
INFINITO_SRC_DIR Source tree path inside the container. /opt/src/infinito Dockerfile, compose.yml, entry.sh
INFINITO_WAIT_HEALTH_TIMEOUT_S Timeout while waiting for the infinito container to become healthy. 600 seconds. compose.py
IP4 Static IPv4 address assigned to the infinito container. Provided by the compose environment. compose.yml
PYTHONHTTPSVERIFY Forces HTTPS certificate verification in the container. 1 compose.yml

Persisted Host Metadata

Variable Purpose Default / values Defined in
INFINITO_VERSION System version written to /etc/environment by the system-version role. Set to the repository version string. main.yml

Notes

  • The tables above cover the repository-owned workflow and runtime variables.
  • Role-specific application env files intentionally stay next to their roles so the app documentation and the generated environment stay in sync.