Podman-first: demote rootful Docker from core to an optional playbook - #42
Merged
Conversation
… (podman-first); Refs #41 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… presence; Refs #41 Remove the play-docker.yml import from playbook-main.yml (the play itself moved to imports/optional/common/ in the previous commit). play-lxc-install-config.yml now probes /usr/bin/dockerd (not /usr/bin/docker, which podman-docker also ships) and conditions the whole DOCKER-USER coexistence block on it: Docker hosts keep the fail-fast chain assertion, podman-only hosts skip it. Update all functional references and docs to the optional path; server-recommended.bundle unchanged (it lists neither docker nor ddev — already podman-first coherent). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
LTSCommerce
added a commit
that referenced
this pull request
Sep 2, 2026
…plans Dormant Eight plan numbers (00067-00074) were each claimed by two folders. The newer folder of each pair is renumbered 00094-00101 from the git counter, with its journal filenames, self-references and index rows updated; the counter is now 101. Plan 00091 is Complete (PR #42 merged) and moves to Completed/. Plans 00053, 00055, 00056, 00058, 00061, 00064, 00065, 00072 and 00073 are marked Dormant, each naming the HOST-side action it waits on. The eleven index rows over 500 characters are cut to one clause each; the rationale already lives in the linked PLAN.md. Dead sibling-plan links and stale planned paths are corrected where the plan could be edited. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
This repo's own policy (CLAUDE/ContainerEngines.md) is Podman first, Docker only for compatibility (DDEV), yet
playbook-main.ymlimportedplay-docker.ymlas a core, non-optional play. That contradicts the policy and it breaks podman-first hosts outright:docker-ce-clipackage-conflicts withpodman-docker(thedockerCLI shim), so on a podman-only host carrying the shim — e.g. a headless podman-only CI host — dnf refuses the transaction and the main playbook cannot converge at all.Per owner direction, this PR goes all-in on podman: rootful Docker is demoted from core to optional. Refs #41 (which tracks the remaining Docker/Podman coexistence concerns).
What
git mv playbooks/imports/play-docker.yml playbooks/imports/optional/common/play-docker.yml; import removed fromplaybook-main.yml. The play itself is unchanged and fully functional.play-lxc-install-config.ymlpreviously hard-asserted "Docker must be installed first". It now probes/usr/bin/dockerd(deliberately not/usr/bin/docker, whichpodman-dockeralso ships — the probe must detect the rootful engine, not the CLI shim) and conditions the entire Docker-coexistence block (DOCKER-USER assertion, reconcile script, immediate apply, systemd persistence unit) on it:optional/common/play-docker.ymlare now correct. Historical plan documents untouched.partial-becomeansible-lint fatal in the LXC play (block-levelbecome_userwithoutbecome; behaviourally a no-op since the play isbecome: true).Bundle decision
server-recommended.bundleis unchanged: it lists neitherplay-docker.ymlnorplay-ddev.yml, so it was already podman-first coherent. Docker stays out of the curated baseline; DDEV users opt in explicitly to both plays.Interactive / headless discovery
No run.bash change needed: both the interactive optional menu and headless
RUN_BASH_OPTIONAL_PLAYBOOKSdiscover plays byfindoverplaybooks/imports/optional/, soplay-docker.ymlappears in the desktop menu (one keypress for DDEV users) and remains addressable by basename headlessly.Migration notes for existing users
play-docker.ymlin the optional menu, or add it toRUN_BASH_OPTIONAL_PLAYBOOKSfor headless runs.playbook-main.ymlnow converges on hosts carryingpodman-docker.QA
qa-ansible-syntax(80 playbooks OK),qa-ansible,qa-patterns,qa-discoveryall pass.qa-docsfails only on pre-existing.claude/rules/*links to a missing daemon-deployed doc, unrelated to this change. Remaining ansible-lint fatals underplaybook-main.ymlare pre-existing in untouched plays (terminal-emulators, toolbox, systemd-user-tweaks).Supersedes PR #40 (
RUN_BASH_SKIP_DOCKERenv-var opt-out) — with Docker optional, a per-host skip flag is unnecessary.Refs #41
🤖 Generated with Claude Code