commit f4f8606faac91f84753468853731f5374e6f4aa1 Author: n.simonov Date: Mon Jan 26 22:26:08 2026 +0400 Initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..3d39831 --- /dev/null +++ b/README.md @@ -0,0 +1,53 @@ +docker_compose logo + +# Docker Compose role + +Deploy Docker Compose project. + +## Usage + +Configure the role. + +```yml +docker_compose_project_name: project01 +docker_compose_data_dir: /srv/compose/compose01 # default: "/srv/compose/{{ docker_compose_project_name }}" +docker_compose_volumes: + - name: postgresql-vol +docker_compose_backup_set: # See restic_backup_set var in role restic +docker_compose_dotenv: | + POSTGRES_PASSWORD=postgres +docker_compose_definition: + services: + db: + image: postgres + volumes: + - ./data/db:/var/lib/postgresql/data + environment: + - POSTGRES_DB=postgres + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=postgres + web: + image: django + command: python -m http.server + ports: + - "8000:8000" + environment: + - POSTGRES_NAME=postgres + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=$POSTGRES_PASSWORD + depends_on: + - db +``` + +And include it in your playbook. + +```yml +- hosts: docker_compose + roles: + - role: docker_compose +``` + +The following tags are available: + +* docker_compose +* docker_compose_backup diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..02fdba5 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,3 @@ +--- +docker_compose_data_dir: /srv/compose/{{ docker_compose_project_name }} +docker_compose_version: 2.24.1 diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..a01fc07 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,7 @@ +--- +- name: Restart {{ role_name }} project + ansible.builtin.command: docker compose -p {{ docker_compose_project_name }} restart + args: + chdir: "{{ docker_compose_data_dir }}" + changed_when: true + when: docker_compose_definition is defined diff --git a/meta/.galaxy_install_info b/meta/.galaxy_install_info new file mode 100644 index 0000000..d570389 --- /dev/null +++ b/meta/.galaxy_install_info @@ -0,0 +1,2 @@ +install_date: Wed Aug 13 15:14:56 2025 +version: '' diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..a6f3869 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,3 @@ +# This file is required by `ansible-galalxy install'. +--- +galaxy_info: diff --git a/tasks/docker_compose.yml b/tasks/docker_compose.yml new file mode 100644 index 0000000..4fb1e7c --- /dev/null +++ b/tasks/docker_compose.yml @@ -0,0 +1,28 @@ +--- +- name: Ensure {{ role_name }} data dir exists + ansible.builtin.file: + path: "{{ docker_compose_data_dir }}" + state: directory + group: "{{ docker_group }}" + mode: "0770" + +- name: Copy {{ role_name }} dotenv + ansible.builtin.template: + src: dotenv + dest: "{{ docker_compose_data_dir }}/.env" + notify: Restart {{ role_name }} project + +- name: Copy {{ role_name }} config + ansible.builtin.template: + src: docker-compose.yml + dest: "{{ docker_compose_data_dir }}/docker-compose.yml" + notify: Restart {{ role_name }} project + when: docker_compose_definition is defined + +- name: Start {{ role_name }} project + ansible.builtin.command: docker compose -p {{ docker_compose_project_name }} up -d + args: + chdir: "{{ docker_compose_data_dir }}" + register: result + changed_when: "'up-to-date' not in result.stderr" + when: docker_compose_definition is defined diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..5fcab79 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,6 @@ +--- +- name: Include {{ role_name }} tasks + ansible.builtin.include_tasks: "{{ role_name }}.yml" + when: docker_compose_project_name is defined + tags: + - docker_compose diff --git a/templates/docker-compose.yml b/templates/docker-compose.yml new file mode 100644 index 0000000..37146fc --- /dev/null +++ b/templates/docker-compose.yml @@ -0,0 +1 @@ +{{ docker_compose_definition | to_nice_yaml(indent=2) }} \ No newline at end of file diff --git a/templates/dotenv b/templates/dotenv new file mode 100644 index 0000000..6a142e3 --- /dev/null +++ b/templates/dotenv @@ -0,0 +1 @@ +{{ docker_compose_dotenv }} \ No newline at end of file