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.yaml ≡ role_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
- Bootstrap + new playbook:
ansible/scripts/install-ansible.sh, ansible/playbooks/install_dev_env.yaml.
- Add
ansible/playbooks/install_docker.yaml (new; old docker.yaml stays).
- Rename internal-only playbooks (
autoware_requirements.yaml → install_image_deps.yaml, nvidia.yaml → install_nvidia.yaml, rmw.yaml → install_rmw.yaml) + update all 11 Dockerfile references across core.Dockerfile, universe.Dockerfile, universe-cuda.Dockerfile, base.Dockerfile, base-cuda.Dockerfile.
- 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).
- Update role READMEs (
acados, artifacts, qt5ct_setup, spconv) to use --tags.
- Migrate
.webauto-ci/main/autoware-setup/run.sh off universe.yaml.
- Coordinated docs PR in
autoware-documentation dropping setup-dev-env.sh references.
Phase 2 — churn, no earlier than 2026-05-24
- Delete all files listed in "Marked for removal in Phase 2".
Motivation
setup-dev-env.shis a 200-line bash wrapper overansible-playbookthat translates flags into--extra-vars, prompts the user, installs ansible, then selects a playbook by string. The new Docker pipeline already bypasses it entirely (callsansible-playbookdirectly with--tags/--skip-tags), and.webauto-ci/main/autoware-setup/run.shfollows 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.yaml≡role_rmw_implementation.yaml), and one wraps a role with a misleading name (install_rviz_theme.yamlwraps theqt5ct_setuprole).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, andautowarefoundation/openadkitreferencessetup-dev-env.sh. To avoid breaking them we split the work into two phases with a ~1 month gap.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.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, supersedinguniverse.yamlandopenadkit.yaml.ansible/playbooks/install_docker.yaml— new, added alongside the existingdocker.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.
install_image_deps.yamlautoware_requirements.yamlinstall_nvidia.yamlnvidia.yamlinstall_rmw.yamlrmw.yamlDockerfile updates required:
install_image_deps.yaml: 5RUNlines acrosscore.Dockerfile,universe.Dockerfile,universe-cuda.Dockerfile.install_nvidia.yaml: 2RUNlines + 2 bind-mount paths inbase-cuda.Dockerfile.install_rmw.yaml: 1RUNline + 1 bind-mount path inbase.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 byinstall-ansible.sh+ directansible-playbookinvocations.docker.yaml— superseded byinstall_docker.yaml.universe.yaml— superseded byinstall_dev_env.yaml.openadkit.yaml— superseded byinstall_dev_env.yaml.role_rmw_implementation.yaml— duplicate ofrmw.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.yamlandinstall_nvidia.yamlare kept as narrow facade playbooks becausebase.Dockerfileandbase-cuda.Dockerfileuse them with narrow--mount=type=bindof just the relevant role directories. Collapsing them intoinstall_image_deps.yaml --tags <x>would force broad bind-mounts of the entireansible/tree and invalidate base-image caches on any role change.Batched PR plan
Phase 1 — additive + internal renames + caller/docs migrations
ansible/scripts/install-ansible.sh,ansible/playbooks/install_dev_env.yaml.ansible/playbooks/install_docker.yaml(new; olddocker.yamlstays).autoware_requirements.yaml→install_image_deps.yaml,nvidia.yaml→install_nvidia.yaml,rmw.yaml→install_rmw.yaml) + update all 11 Dockerfile references acrosscore.Dockerfile,universe.Dockerfile,universe-cuda.Dockerfile,base.Dockerfile,base-cuda.Dockerfile.setup-dev-env.sh, top-of-file comment for the playbooks).acados,artifacts,qt5ct_setup,spconv) to use--tags..webauto-ci/main/autoware-setup/run.shoffuniverse.yaml.autoware-documentationdroppingsetup-dev-env.shreferences.Phase 2 — churn, no earlier than 2026-05-24