- Rename lookup plugin from `docker` to `container`
- Switch all lookups from `lookup('docker', ...)` to `lookup('container', ...)`
- Normalize compose file keys:
- docker_compose → compose
- docker_compose_override → compose_override
- docker_compose_ca_override → compose_ca_override
- Centralize compose path resolution via docker_paths_utils
- Update compose_file_args to always derive paths from DIR_COMPOSITIONS
- Align all roles, templates, and vars with container/compose naming
- Update and rename unit tests accordingly
This prepares the codebase for engine-agnostic container backends
(e.g. Docker ↔ Podman) and removes legacy docker-specific assumptions.
https://chatgpt.com/share/6987a7cc-d374-800f-99ad-bb4c8f92c59e
- Import get_invokable_paths and get_non_invokable_paths at module level
so unittest.mock.patch can replace them
- Forward roles_file and suffix unchanged to preserve CLI boundary
- Remove implicit default resolution from CLI
- Keep error handling and output behavior unchanged
https://chatgpt.com/share/6987a639-0f8c-800f-9ee0-70cff683aa56
- Rename install task file from 02_install_routines.yml to 02_install.yml
for clearer intent and consistency
- Update all include_tasks references accordingly
- Bump backup-docker-to-local from 1.6.0 to 1.7.0 to include latest fixes
https://chatgpt.com/share/69873720-d444-800f-99f7-f7799fc10c0b
Replace direct `docker` command usage, references, and documentation with
the `container` wrapper to ensure engine abstraction and future portability
(e.g. Docker → Podman).
This includes:
- Shell scripts, Ansible tasks, handlers, and Python helpers
- Documentation, comments, help texts, and meta descriptions
- Network, volume, system, and image operations
- Test expectations and comments
All runtime behavior remains unchanged while enforcing the repository-wide
rule to avoid raw Docker invocations.
https://chatgpt.com/share/698721c3-e270-800f-be7a-e4435fb54506
Make the container wrapper future-proof by forwarding all non-`run`
subcommands directly to Docker. This removes the need to whitelist
individual Docker commands and enables seamless replacement of raw
`docker <cmd>` calls with `container <cmd>` across the repo.
https://chatgpt.com/share/698721c3-e270-800f-be7a-e4435fb54506
- Rename all docker-compose.yml templates to compose.yml
- Update override and CA override filenames accordingly
- Adjust compose wrapper, lookup plugins, filters and path helpers
- Update roles, tasks, handlers and scripts to use compose CLI
- Rewrite documentation and admin guides to reference compose
- Update unit and integration tests to expect compose.yml
- Keep internal variable keys for backward compatibility where needed
https://chatgpt.com/share/69870272-b168-800f-84c3-6417398e441f
- Pass LDAP settings via environment instead of shell interpolation
- Use getenv() in PHP to avoid quoting issues and injection risks
- Properly handle base64-decoded LDAP bind password
- Explicitly disable SC2016 where single-quoted PHP code is intentional
https://chatgpt.com/share/69866fd2-e164-800f-bc7b-615120e58e15
- Switch all docker compose invocations to the compose wrapper
- Update comments, task names, and log messages accordingly
- Simplify handlers and tasks to rely on wrapper-managed flags and env files
- Align tests and documentation with compose-based workflow
https://chatgpt.com/share/69866ede-be2c-800f-94b0-bffcf8fed260
Replace all `docker compose build` invocations with the `compose` wrapper
to ensure automatic env-file detection and override handling. Update
handlers, notify targets, direct commands, and log labels consistently
across roles.
https://chatgpt.com/share/69866b76-ce6c-800f-ac9e-dba6bba27008
- Replace direct docker calls with container wrapper across scripts, roles, and templates
- Add support for cp, start, stop, and restart passthrough commands
- Align handlers and notifications to container manager restart semantics
- Fix systemd ExecStartPost to use container wrapper without hardcoded paths
- Silence ShellCheck SC2016 false positive for container exec password injection
- Update tests and documentation strings to reflect container-based workflow
https://chatgpt.com/share/69866958-c88c-800f-9b4f-3a972615bf42
Add --rm to container run so CSP checker containers are removed
automatically after completion. This prevents exited one-shot containers
from being picked up by repair/health logic and avoids false recovery
attempts.
Unit tests were updated to reflect the new --rm behavior.
https://chatgpt.com/share/6986525a-4b48-800f-b310-bb8b231121ec
Filter docker ps by com.docker.compose.project label in STRICT mode so that
one-shot docker run containers are ignored. This prevents false repair
attempts and label lookup errors for containers without compose metadata.
Unit tests were updated to reflect the new compose-only prefilter behavior.
https://chatgpt.com/share/6986525a-4b48-800f-b310-bb8b231121ec
- Persist CA_TRUST_* variables in /etc/environment for self-signed TLS
- Remove CA trust environment when switching to letsencrypt
- Enable container.py to auto-detect CA injection context via env
https://chatgpt.com/share/69864bf2-7830-800f-ae8a-dad17c4f6e13
- Switch CA handling to soft-fail with warnings instead of hard exits
- Fallback to plain `docker run` when CA env vars or files are missing
- Avoid failing on images without ENTRYPOINT (warn + fallback)
- Simplify entrypoint inspect recovery logic (direct pull + retry)
- Refactor container wrapper structure and comments
- Extend unit tests to cover CA soft-fail and docker run fallback paths
https://chatgpt.com/share/69864bf2-7830-800f-ae8a-dad17c4f6e13
Replace hardcoded `docker compose {{ lookup('compose_file_args', ...) }}` usages
with `BIN_COMPOSE` across listmonk, mastodon, and snipe-it roles to centralize
compose invocation logic, ensure consistent override handling, and reduce
duplication.
Also align Snipe-IT admin tasks to dynamic user attributes and improve shell
robustness.
https://chatgpt.com/share/69864433-895c-800f-905b-b955495f3caf
Ensure conflicting host SMTP components are disabled when Mailu
provides external SMTP. This refactors SMTP/MSMTP enable/disable
tasks, removes redundant package conflicts, and prepares for
robust port 25 handling to avoid Docker compose startup failures.
https://chatgpt.com/share/69863260-c4e4-800f-adbd-67f87c091264
Move entry.sh, development init, and development deploy execution into the
development container via cli.deploy.development exec.
Deployment logic, arguments, and execution order remain unchanged.
https://chatgpt.com/share/69861572-9c74-800f-9f3f-904202371bbc
Replace usages of the get_app_conf filter with the config lookup plugin
across roles and templates. Adjust quoting where required to keep YAML
and Jinja syntax valid. No functional changes intended.
https://chatgpt.com/share/69860678-cef8-800f-8402-7fe6231fdc2d
The get_app_conf() helper no longer requires an explicit third
parameter to enable application-specific lookups. All templates,
tasks, and vars have been updated to rely on the new default behavior
by removing the redundant `True` argument.
This simplifies usage, improves readability, and enforces a consistent
API across Jinja2 templates and Ansible logic.
https://chatgpt.com/share/6985f5f6-c084-800f-887a-4a70d62e6dcf
Introduce a `config` lookup plugin that exposes `get_app_conf` via Ansible
lookups, defaulting to strict mode and supporting an optional default value.
Add comprehensive unittest coverage validating strict behavior, defaults,
schema-defined but unset errors, index access, and argument validation.
https://chatgpt.com/share/6985f3f5-4660-800f-9e5d-2b518ccdff80
Introduce a new Ansible lookup plugin `domain()` that resolves the primary
domain directly from the `domains` variable using only `application_id`.
Includes comprehensive unit tests covering string, list, dict, and error cases.
https://chatgpt.com/share/6985ef1e-11b8-800f-b231-52523055060b