Skip to content

feat(runner): profile-aware bundle route so BASELINE_* toggles are reachable over HTTP #120

Description

@pparage

#113 removed the five hardcoded ubuntu bundle routes, because range42-playbooks#137 retired the per-package bundles to decom/ and replaced them with composed profiles. Everything is still invocable through the generic runner (fixed in #113 to accept nested names via the :path converter), but one capability did not survive: per-package control.

The old routes translated request fields into INSTALL_PACKAGES_* extravars — docker without compose, dotfiles without the rest, package-category toggles, SPECIFIC_PACKAGES_CLEANING. The replacements are profiles driven by BASELINE_* variables:

retired replacement
install/basic-packages generic/systems.baseline.with_utils
install/docker generic/systems.baseline.docker_host (BASELINE_INSTALL_DOCKER=YES)
install/docker-compose same docker_host profile (BASELINE_INSTALL_DOCKER_COMPOSE=YES)
install/dot-files generic/systems.configure.dotfiles
configure/add-user generic/systems.configure.add_user

app/routes/runner.py _run_generic forwards only proxmox_node as an extravar, so BASELINE_* cannot be set at all. You get each profile's defaults or nothing.

Also note the replacements changed their host contract: retired bundles were hosts: all, the profiles are group-scoped (hosts: "{{ TARGET_GROUP }}" in systems.configure.add_user, hosts: "{{ target_group }}" in systems.baseline.default — the casing is inconsistent between them, worth raising with @range42-playbooks). Any caller must now pass a target group and honour RANGE42_BUNDLE_DIR.

Options

  1. Allow a validated extravars map in the generic runner body (needs an allow-list — arbitrary extravars into ansible-runner is an injection surface).
  2. A typed route per profile that maps request fields → BASELINE_*, i.e. what the removed routes did, against the new bundle names.
  3. Decide per-package control is not a v1 API concern and close.

Blocked on a product call, which is why #113 removed rather than remapped. No consumer today — deployer-ui never had composables for these.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions