implemented compose by url, parse, local yaml.
This commit is contained in:
1 parent
53695f4fff
commit
784fff8faf
218 files changed
+2271
-640
No files matched your search
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
- name: restart compose project
|
||||
community.docker.docker_compose_v2:
|
||||
project_src: "{{ compose_project_dir }}"
|
||||
state: restarted
|
||||
|
||||
@@ -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]
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
Reference in new issue
Block a user