Skip to content

Simplify ansible entrypoints: rename playbooks and drop setup-dev-env.sh #7052

@xmfcx

Description

@xmfcx

Motivation

setup-dev-env.sh is a 200-line bash wrapper over ansible-playbook that translates flags into --extra-vars, prompts the user, installs ansible, then selects a playbook by string. The new Docker pipeline already bypasses it entirely (calls ansible-playbook directly with --tags/--skip-tags), and .webauto-ci/main/autoware-setup/run.sh follows the same pattern.

The remaining playbooks are inconsistently named (setup_acados.yaml, install_rviz_theme.yaml, download_artifacts.yaml, role_rmw_implementation.yaml, rmw.yaml, ...), one is duplicated (rmw.yamlrole_rmw_implementation.yaml), and one wraps a role with a misleading name (install_rviz_theme.yaml wraps the qt5ct_setup role).

This issue tracks consolidating the entrypoints and renaming the playbooks for predictability.

Transition window

External consumers exist: TIER IV internal scripts depend on universe.yaml, and autowarefoundation/openadkit references setup-dev-env.sh. To avoid breaking them we split the work into two phases with a ~1 month gap.

  • Phase 1 (now) is additive: new scripts/playbooks, internal-only renames, deprecation markers, and all caller/docs migrations off the soon-to-be-deleted files. Files with external callers (setup-dev-env.sh, docker.yaml, universe.yaml, legacy wrappers and single-role playbooks) are kept in place and annotated with a deprecation marker pointing to their replacement and a removal date of 2026-05-24.
  • Phase 2 (no earlier than 2026-05-24) deletes every marked file in one coordinated batch.

What changes

New files

  • ansible/scripts/install-ansible.sh (~25 lines) installs OS prerequisites + ansible==10.* via pipx. Does NOT install Galaxy collections or run any playbook — those are explicit follow-up commands the caller runs.
  • ansible/playbooks/install_dev_env.yaml — the new top-level dev-env playbook, superseding universe.yaml and openadkit.yaml.
  • ansible/playbooks/install_docker.yaml — new, added alongside the existing docker.yaml (which is kept and marked for removal because it has external callers).

Internal-only renames (safe now)

These playbooks are only referenced from Dockerfiles in this repo, so renaming them is a pure internal refactor.

New Old
install_image_deps.yaml autoware_requirements.yaml
install_nvidia.yaml nvidia.yaml
install_rmw.yaml rmw.yaml

Dockerfile updates required:

  • install_image_deps.yaml: 5 RUN lines across core.Dockerfile, universe.Dockerfile, universe-cuda.Dockerfile.
  • install_nvidia.yaml: 2 RUN lines + 2 bind-mount paths in base-cuda.Dockerfile.
  • install_rmw.yaml: 1 RUN line + 1 bind-mount path in base.Dockerfile.

Marked for removal in Phase 2

Every file below gets a deprecation banner (for setup-dev-env.sh) or a top-of-file comment pointing to its replacement and the 2026-05-24 removal date. All stay functional until Phase 2.

  • setup-dev-env.sh — superseded by install-ansible.sh + direct ansible-playbook invocations.
  • docker.yaml — superseded by install_docker.yaml.
  • universe.yaml — superseded by install_dev_env.yaml.
  • openadkit.yaml — superseded by install_dev_env.yaml.
  • role_rmw_implementation.yaml — duplicate of rmw.yaml / install_rmw.yaml.
  • setup_acados.yaml — replace with --tags acados.
  • download_artifacts.yaml — replace with --tags artifacts.
  • install_rviz_theme.yaml — replace with --tags qt5ct_setup.
  • install_spconv.yaml — replace with --tags spconv.
  • telegraf.yaml — no callers; kept only so Phase 1 stays non-destructive.

Cache layering preserved

install_rmw.yaml and install_nvidia.yaml are kept as narrow facade playbooks because base.Dockerfile and base-cuda.Dockerfile use them with narrow --mount=type=bind of just the relevant role directories. Collapsing them into install_image_deps.yaml --tags <x> would force broad bind-mounts of the entire ansible/ tree and invalidate base-image caches on any role change.

Batched PR plan

Phase 1 — additive + internal renames + caller/docs migrations

  1. Bootstrap + new playbook: ansible/scripts/install-ansible.sh, ansible/playbooks/install_dev_env.yaml.
  2. Add ansible/playbooks/install_docker.yaml (new; old docker.yaml stays).
  3. Rename internal-only playbooks (autoware_requirements.yamlinstall_image_deps.yaml, nvidia.yamlinstall_nvidia.yaml, rmw.yamlinstall_rmw.yaml) + update all 11 Dockerfile references across core.Dockerfile, universe.Dockerfile, universe-cuda.Dockerfile, base.Dockerfile, base-cuda.Dockerfile.
  4. Add deprecation markers to every file in "Marked for removal in Phase 2" (banner for setup-dev-env.sh, top-of-file comment for the playbooks).
  5. Update role READMEs (acados, artifacts, qt5ct_setup, spconv) to use --tags.
  6. Migrate .webauto-ci/main/autoware-setup/run.sh off universe.yaml.
  7. Coordinated docs PR in autoware-documentation dropping setup-dev-env.sh references.

Phase 2 — churn, no earlier than 2026-05-24

  1. Delete all files listed in "Marked for removal in Phase 2".

Metadata

Metadata

Assignees

Labels

type:buildTooling and infrastructure around building the Autoware.type:containersDocker containers, containerization of components, or container orchestration.type:installationIssues or improvements related to the installation process of the software.

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions