docker_compose(role): add support for deploying optional .env file
Some checks failed
/ Ansible Lint (push) Successful in 2m9s
/ Ansible Lint (pull_request) Failing after 1m16s

This is needed for situations, where one wants to use a vendor-provided
compose file and configure it using environment variables.
Like for example:
https://github.com/zammad/zammad-docker-compose
This commit is contained in:
June 2025-10-24 22:05:54 +02:00
commit 3840553f9d
Signed by: june
SSH key fingerprint: SHA256:o9EAq4Y9N9K0pBQeBTqhSDrND5E7oB+60ZNx0U1yPe0
3 changed files with 19 additions and 2 deletions

View file

@ -1,8 +1,8 @@
# Role `docker_compose`
A role for deploying a Docker-Compose-based application.
It deploys the given Compose file as well as configuration files to the specified hosts and makes sure all services are up-to-date and running.
The Compose file gets deployed to `/ansible_docker_compose/compose.yaml` and the configuration files get deployed into the `/ansible_docker_compose/configs/` directory.
It deploys the given Compose file, an optional `.env` file, as well as configuration files to the specified hosts and makes sure all services are up-to-date and running.
The Compose file gets deployed to `/ansible_docker_compose/compose.yaml`, the `.env` file to `/ansible_docker_compose/.env` and the configuration files get deployed into the `/ansible_docker_compose/configs/` directory.
A use case for the deployment of the additional configuration files is Composes top-level element `configs` in conjunction with the `configs` option for services.
## Supported Distributions

View file

@ -7,6 +7,12 @@ argument_specs:
`/ansible_docker_compose/compose.yaml`.
type: str
required: true
docker_compose__env_file_content:
description: >-
The content of the .env file at
`/ansible_docker_compose/.env`.
type: str
required: false
docker_compose__configuration_files:
description: >-
A list of configuration files to be deployed in the

View file

@ -17,6 +17,17 @@
become: true
notify: docker compose down
- name: deploy the .env file
ansible.builtin.copy:
content: "{{ docker_compose__env_file_content }}"
dest: /ansible_docker_compose/.env
mode: "0644"
owner: root
group: root
become: true
when: docker_compose__env_file_content is defined
notify: docker compose down
- name: make sure the `/ansible_docker_compose/configs` directory exists
ansible.builtin.file:
path: /ansible_docker_compose/configs