#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
- Allow a validated extravars map in the generic runner body (needs an allow-list — arbitrary extravars into
ansible-runner is an injection surface).
- A typed route per profile that maps request fields →
BASELINE_*, i.e. what the removed routes did, against the new bundle names.
- 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.
#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:pathconverter), 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 byBASELINE_*variables:install/basic-packagesgeneric/systems.baseline.with_utilsinstall/dockergeneric/systems.baseline.docker_host(BASELINE_INSTALL_DOCKER=YES)install/docker-composedocker_hostprofile (BASELINE_INSTALL_DOCKER_COMPOSE=YES)install/dot-filesgeneric/systems.configure.dotfilesconfigure/add-usergeneric/systems.configure.add_userapp/routes/runner.py_run_genericforwards onlyproxmox_nodeas an extravar, soBASELINE_*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 }}"insystems.configure.add_user,hosts: "{{ target_group }}"insystems.baseline.default— the casing is inconsistent between them, worth raising with @range42-playbooks). Any caller must now pass a target group and honourRANGE42_BUNDLE_DIR.Options
ansible-runneris an injection surface).BASELINE_*, i.e. what the removed routes did, against the new bundle names.Blocked on a product call, which is why #113 removed rather than remapped. No consumer today — deployer-ui never had composables for these.