From efce508e16378a2937b86f6211ba22a6e2105f82 Mon Sep 17 00:00:00 2001 From: Nikita Simonov Date: Fri, 22 May 2026 20:30:47 +0400 Subject: [PATCH] refactor compose deploy --- tasks/docker_compose.yml | 12 ++---------- tasks/docker_compose_configs.yml | 30 ++++++++++++++++++++++++++++++ tasks/main.yml | 12 ++++++++++++ tasks/start.yml | 7 +++++++ templates/docker-compose.yml | 1 - templates/docker-compose.yml.j2 | 3 +++ 6 files changed, 54 insertions(+), 11 deletions(-) create mode 100644 tasks/docker_compose_configs.yml create mode 100644 tasks/start.yml delete mode 100644 templates/docker-compose.yml create mode 100644 templates/docker-compose.yml.j2 diff --git a/tasks/docker_compose.yml b/tasks/docker_compose.yml index 4fb1e7c..46ec3b3 100644 --- a/tasks/docker_compose.yml +++ b/tasks/docker_compose.yml @@ -12,17 +12,9 @@ dest: "{{ docker_compose_data_dir }}/.env" notify: Restart {{ role_name }} project -- name: Copy {{ role_name }} config +- name: Copy {{ role_name }} compose ansible.builtin.template: - src: docker-compose.yml + src: docker-compose.yml.j2 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/docker_compose_configs.yml b/tasks/docker_compose_configs.yml new file mode 100644 index 0000000..dfaaa78 --- /dev/null +++ b/tasks/docker_compose_configs.yml @@ -0,0 +1,30 @@ +# - name: degug +# ansible.builtin.debug: +# msg: "dir_name: {{ item.0.dir_name }}; files: {{ item.1 }}" +# loop: "{{ docker_compose_configs | subelements('files') }}" +# loop_control: +# label: "{{ item.0.dir_name }}" + +- name: Ensure {{ role_name }} configs dir exists + ansible.builtin.file: + path: "{{ docker_compose_data_dir }}/configs" + state: directory + group: "{{ docker_group }}" + mode: "0770" + +- name: Ensure {{ role_name }} configs dirs exists + ansible.builtin.file: + path: "{{ docker_compose_data_dir }}/configs/{{ item.dir_name }}" + state: directory + group: "{{ docker_group }}" + mode: "0770" + loop: "{{ docker_compose_configs }}" + +- name: Copy {{ role_name }} config + ansible.builtin.template: + src: "{{ playbook_dir }}/templates/{{ docker_compose_project_name }}/{{ item.0.dir_name }}/{{ item.1 }}.j2" + dest: "{{ docker_compose_data_dir }}/configs/{{ item.0.dir_name }}/{{ item.1 }}" + notify: Restart {{ role_name }} project + loop: "{{ docker_compose_configs | subelements('files') }}" + loop_control: + label: "{{ item.0.dir_name }}" diff --git a/tasks/main.yml b/tasks/main.yml index 5fcab79..dc7a11a 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -4,3 +4,15 @@ when: docker_compose_project_name is defined tags: - docker_compose + +- name: Include {{ role_name }}_configs tasks + ansible.builtin.include_tasks: "{{ role_name }}_configs.yml" + when: docker_compose_configs is defined + tags: + - docker_compose_configs + +- name: Include start tasks + ansible.builtin.include_tasks: "start.yml" + when: docker_compose_project_name is defined + tags: + - docker_compose_start diff --git a/tasks/start.yml b/tasks/start.yml new file mode 100644 index 0000000..f777f39 --- /dev/null +++ b/tasks/start.yml @@ -0,0 +1,7 @@ +- 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/templates/docker-compose.yml b/templates/docker-compose.yml deleted file mode 100644 index 37146fc..0000000 --- a/templates/docker-compose.yml +++ /dev/null @@ -1 +0,0 @@ -{{ docker_compose_definition | to_nice_yaml(indent=2) }} \ No newline at end of file diff --git a/templates/docker-compose.yml.j2 b/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..593a8bf --- /dev/null +++ b/templates/docker-compose.yml.j2 @@ -0,0 +1,3 @@ +name: {{ docker_compose_project_name }} + +{{ docker_compose_definition | to_nice_yaml(indent=2) }}