Files
computer-playbook/scripts/tests/deploy/local/deploy
kevinveenbirkenbachandClaude Opus 5.5 d92375922d feat(roles): pull custom roles from inventory-declared sources
An inventory group web-app-cst-<name> with applications.<id>.custom: true and
a pinned source {url, version, path} is pulled into roles/ before the play,
read raw (Jinja, Ansible tags and credential URLs refused), placed through a
staging directory under an exclusive lock, and owned by a marker that names
its own directory, so a pull or roles-clean never replaces or removes a
directory it did not place and a failed pull leaves roles/ as it was.
Directory inventories, host lists and non-UTF-8 files behave as Ansible
reads them; generated test deploys pass --skip-pull. make roles-pull,
roles-clean and roles list, INFINITO_EXTRA_MOUNTS for local sources, the
web-app-cst category, the reserved prefix lint and a central
repository_files() that also yields the gitignored custom roles let every
lint scan them like in-tree roles. Supersedes the uncommitted 045 External
Roles draft and reuses its fetch, sync and mount design.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-29 00:02:58 +01:00
..
…
…

Local Deploy Scripts

This directory holds the executable local deploy flows under scripts/tests/deploy/local/deploy/.

For other local helpers, use ../README.md. For the canonical Make target index that invokes these helpers, see make.md.

Prerequisites

  • Run commands from the repository root.
  • Docker and Docker Compose are available locally.
  • jq is installed for the app-discovery step in apps/initialize/all.sh.
  • If you run scripts directly, load the defaults with source scripts/meta/env/all.sh.

Naming

The apps/ subtree is split by verb (the user intent) and scope:

  • initialize/ creates or refreshes the inventory; existing entity state is kept.
  • reinstall/ recreates the inventory and purges existing entities first.
  • update/ reuses the already-initialized inventory.
  • all.sh covers every discovered application; selection.sh covers one or more apps passed via apps (or a positional argument).

The bundles/ subtree mirrors the same axes for inventory bundles (fresh.sh ≈ initialize, update.sh ≈ update).

The container/ subtree holds the in-container halves invoked by the host wrappers and follows the same verb/scope layout; see container/.

Entry Points

Entry point What it does Key inputs Notes
apps/initialize/all.sh Discovers apps, creates devices.yml, and deploys all discovered apps. INFINITO_DISTRO, INFINITO_INVENTORY_DIR Fresh all-app inventory path.
apps/initialize/selection.sh <app-id> Creates devices.yml for one or more apps and deploys them. apps=<app-id> Init and deploy path for a specific app set.
apps/reinstall/selection.sh Recreates devices.yml and deploys one or more apps twice with ASYNC_ENABLED=false and ASYNC_ENABLED=true. INFINITO_DISTRO, INFINITO_INVENTORY_DIR, apps Baseline and recovery path; purges entities first.
apps/update/all.sh Deploys every app from an existing inventory. INFINITO_DISTRO, INFINITO_INVENTORY_DIR Requires ${INFINITO_INVENTORY_DIR}/devices.yml and .password.
apps/update/selection.sh Runs a targeted infinito administration deploy dedicated for one or more apps. apps, INFINITO_CONTAINER, INFINITO_DEBUG, INFINITO_INVENTORY_DIR Reuses devices.yml.