Files
computer-playbook/scripts/tests/deploy/local/deploy
kevinveenbirkenbachandClaude Opus 5.5 c9e7f950d9 Merge branch 'feature/updater' into feature/store-i18n
68 conflicts, resolved per hunk; resolutions agreed with the Updater
session were applied as agreed:

- svc-db-postgres (superuser password script and core) and
  sys-svc-rdbms realign_dedicated_db: updater's argv/stdin redesign with
  expand_argument_vars: false, nested into store-i18n's block structure.
- svc-db-redis 01_init: store-i18n's ACL password on stdin.
- sys-svc-proxy forwarded.conf.j2: store-i18n's handover-aware file,
  without the forwarded_base include (Host and X-Forwarded-Proto would
  be sent twice); forwarded_base serves the inline consumers, e.g.
  web-app-seaweedfs nginx.conf.j2.
- basic.conf.j2 and web-app-openproject proxy.conf.j2: issuer redirect,
  then handover, else updater's location/sso_acl.conf.j2; the
  server-level webserver_extra_configuration hook stays.
- web-app-keycloak: updater's admin-REST settings step and renumbered
  update steps; update/01_client.yml removed; store-i18n's design step
  and LDAP block kept; a73435cc9d arrived through rename detection.
- web-app-nextcloud OpenProject provisioning: updater's rewrite, all
  credentials on the Ruby runner's stdin.
- web-app-semaphore: store-i18n's canonical web root (a1d7835863).
- Role READMEs: no generated Cosmos/Architecture/Quick Setup/Credits
  sections; desk-* paths resolved to the dsk-* renames.

Integration fixes for what merged cleanly but did not fit together:

- web-app-matrix ansible vars: drop updater's second
  matrix_client_element_configuration_extension_json, which silently
  overrode store-i18n's design-aware value.
- url.origin instead of a stripped url.base in 19 places store-i18n
  added since 44aaa68924, same lookup targets (the double-slash lint).
- Package batch (18ea75049e, cb4d340de9): installs the deploy-start
  batch covers are removed (caffeine, cursor, blender, npm in dsk-gnt-*,
  with shared references), the rest carry batch: false and a nocheck
  with the verified reason (PyPI fallback, before the batch, vendor
  repository, configured flavor only, addon gate); dev-npm references
  the root npm id.
- sys-token-store write_many.yml: store-i18n's change-gated block and
  IS_SWARM_MODE.
- web-app-openproject: IS_COMPOSE_MODE in 02_migrate/run.yml; the
  seeded-admin lock (ccbf8f168d) ported into 04_admin/provision.yml and
  covered by the admin-state digest.
- Bucket policy (3b4ac40df5 and follow-ups) moved to web-svc-seaweedfs,
  where store-i18n's object store lives; the S3 admin secret travels on
  stdin instead of a task-level environment.
- act workflow.sh: no Exception-labelled comment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 02:28:16 +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.