implemented compose by url, parse, local yaml.

This commit is contained in:
boris committed 2026-07-10 13:32:40 +01:00
1 parent 53695f4fff
commit 784fff8faf
218 files changed
+2271 -640

No files matched your search

+11
View File
@@ -0,0 +1,11 @@
# compose_project
Normalizes Docker Compose project deployment for all Compose-backed roles.
This role renders `.env`, `compose.yaml`, and optional `compose.override.yaml`,
creates required directories and proxy networks, opens declared UFW ports, and
starts the Compose project.
Application roles should provide their own templates and call this role instead
of duplicating Compose lifecycle tasks.
+20
View File
@@ -0,0 +1,20 @@
---
compose_project_dir: ""
compose_project_directories:
- "{{ compose_project_dir }}"
compose_project_env_template_src: ""
compose_project_compose_template_src: ""
compose_project_override_template_src: ""
compose_project_env_dest: "{{ compose_project_dir }}/.env"
compose_project_compose_dest: "{{ compose_project_dir }}/compose.yaml"
compose_project_override_dest: "{{ compose_project_dir }}/compose.override.yaml"
compose_project_env_mode: "0600"
compose_project_compose_mode: "0644"
compose_project_override_mode: "0644"
compose_project_proxy_network: ""
compose_project_create_proxy_network: false
compose_project_firewall_ports: []
compose_project_firewall_enabled: false
compose_project_state: present
compose_project_pull: missing
+1
View File
@@ -0,0 +1 @@
+6
View File
@@ -0,0 +1,6 @@
---
- name: restart compose project
community.docker.docker_compose_v2:
project_src: "{{ compose_project_dir }}"
state: restarted
+75
View File
@@ -0,0 +1,75 @@
---
- name: Validate Compose project directory is configured
ansible.builtin.assert:
that:
- compose_project_dir | length > 0
- compose_project_compose_template_src | length > 0
fail_msg: "compose_project_dir and compose_project_compose_template_src are required."
tags: [compose_project]
- name: Create Compose project directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: root
group: root
mode: "0755"
loop: "{{ compose_project_directories }}"
tags: [compose_project, directories]
- name: Ensure Compose project proxy network exists
community.docker.docker_network:
name: "{{ compose_project_proxy_network }}"
state: present
when:
- compose_project_create_proxy_network | bool
- compose_project_proxy_network | length > 0
tags: [compose_project, docker]
- name: Render Compose project environment file
ansible.builtin.template:
src: "{{ compose_project_env_template_src }}"
dest: "{{ compose_project_env_dest }}"
owner: root
group: root
mode: "{{ compose_project_env_mode }}"
when: compose_project_env_template_src | length > 0
no_log: true
tags: [compose_project, config]
- name: Render Compose project file
ansible.builtin.template:
src: "{{ compose_project_compose_template_src }}"
dest: "{{ compose_project_compose_dest }}"
owner: root
group: root
mode: "{{ compose_project_compose_mode }}"
notify: restart compose project
tags: [compose_project, compose]
- name: Render Compose project override file
ansible.builtin.template:
src: "{{ compose_project_override_template_src }}"
dest: "{{ compose_project_override_dest }}"
owner: root
group: root
mode: "{{ compose_project_override_mode }}"
when: compose_project_override_template_src | length > 0
notify: restart compose project
tags: [compose_project, compose]
- name: Allow Compose project firewall ports
community.general.ufw:
rule: allow
port: "{{ item.port | default(item.host | default(item.container | default(item))) }}"
proto: "{{ item.proto | default(item.protocol | default('tcp')) }}"
loop: "{{ compose_project_firewall_ports }}"
when: compose_project_firewall_enabled | bool
tags: [compose_project, firewall]
- name: Start Compose project
community.docker.docker_compose_v2:
project_src: "{{ compose_project_dir }}"
state: "{{ compose_project_state }}"
pull: "{{ compose_project_pull }}"
tags: [compose_project, compose]
+1
View File
@@ -0,0 +1 @@