Skip to content

Commit

Permalink
docker: refactor docker controller to use job status
Browse files Browse the repository at this point in the history
closes #235
  • Loading branch information
saltydk committed Jul 22, 2024
1 parent 2888c8d commit bcf8705
Show file tree
Hide file tree
Showing 13 changed files with 185 additions and 113 deletions.
2 changes: 1 addition & 1 deletion inventories/group_vars/all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ docker_volumes_downloads_common: "{{ docker_volumes_downloads_nzbs + docker_volu
else [downloads_root_path + ':/downloads'] }}"

docker_volumes_common_folders:
- "/mnt:/mnt"
- "/mnt:/mnt:rshared"

docker_volumes_common: "{{ docker_volumes_common_folders + docker_volumes_downloads_common
if (lookup('vars', traefik_role_var + '_docker_volumes_download', default=true) | bool)
Expand Down
32 changes: 32 additions & 0 deletions resources/tasks/docker/start_saltbox_docker_containers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
##########################################################################################
# Title: Saltbox: Resources | Tasks | Docker | Start Saltbox Docker Containers #
# Author(s): salty #
# URL: https://github.com/saltyorg/Saltbox #
# -- #
##########################################################################################
# GNU General Public License v3.0 #
##########################################################################################
---
- name: Start Saltbox Docker Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/start{{ _query_var if _query_var is defined else '' }}"
method: POST
register: start_docker_controller_job
ignore_errors: true

- name: Poll for job completion
ansible.builtin.uri:
url: "{{ docker_controller_url }}/job_status/{{ start_docker_controller_job.json.job_id }}"
method: GET
register: start_job_status
until: start_job_status.json.status in ['completed', 'failed']
retries: 120
delay: 5
when: start_docker_controller_job is success

- name: Check job status
ansible.builtin.debug:
msg: "Failed starting Saltbox Docker containers"
when:
- start_docker_controller_job is success
- start_job_status.json.status == 'failed'
32 changes: 32 additions & 0 deletions resources/tasks/docker/stop_saltbox_docker_containers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
##########################################################################################
# Title: Saltbox: Resources | Tasks | Docker | Stop Saltbox Docker Containers #
# Author(s): salty #
# URL: https://github.com/saltyorg/Saltbox #
# -- #
##########################################################################################
# GNU General Public License v3.0 #
##########################################################################################
---
- name: Stop Saltbox Docker Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/stop{{ _query_var if _query_var is defined else '' }}"
method: POST
register: stop_docker_controller_job
ignore_errors: true

- name: Poll for job completion
ansible.builtin.uri:
url: "{{ docker_controller_url }}/job_status/{{ stop_docker_controller_job.json.job_id }}"
method: GET
register: stop_job_status
until: stop_job_status.json.status in ['completed', 'failed']
retries: 120
delay: 5
when: stop_docker_controller_job is success

- name: Check job status
ansible.builtin.debug:
msg: "Failed stopping Saltbox Docker containers"
when:
- stop_docker_controller_job is success
- stop_job_status.json.status == 'failed'
35 changes: 11 additions & 24 deletions roles/backup/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -312,16 +312,15 @@
{%- else -%}
{% endif %}
- name: Stop Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/stop{{ '?' + ignore_query_string if (ignore_query_string | length > 0) else '' }}"
method: POST
timeout: 600
ignore_errors: true
- name: Stop Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/stop_saltbox_docker_containers.yml"
vars:
_query_var: "{{ '?' + ignore_query_string if (ignore_query_string | length > 0) else '' }}"

- name: "Stop all running Docker containers"
ansible.builtin.shell: "docker stop {{ docker_containers_string }}"
ignore_errors: true
when: (docker_containers_string | trim | length > 0)

- name: "Notify | Saltbox Backup: Stopped Docker containers"
ansible.builtin.include_role:
Expand Down Expand Up @@ -399,12 +398,8 @@
ansible.builtin.wait_for:
timeout: 5

- name: Start Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/start"
method: POST
timeout: 600
ignore_errors: true
- name: Start Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/start_saltbox_docker_containers.yml"
when: (docker_containers_string | trim | length > 0)

- name: "Snapshot | Start all previously running Docker containers"
Expand Down Expand Up @@ -522,12 +517,8 @@
ansible.builtin.wait_for:
timeout: 5

- name: Start Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/start"
method: POST
timeout: 600
ignore_errors: true
- name: Start Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/start_saltbox_docker_containers.yml"
when: (docker_containers_string | trim | length > 0)

- name: "Start all previously running Docker containers"
Expand Down Expand Up @@ -724,12 +715,8 @@
ansible.builtin.wait_for:
timeout: 5

- name: Start Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/start"
method: POST
timeout: 600
ignore_errors: true
- name: Start Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/start_saltbox_docker_containers.yml"
when: (docker_containers_string is defined) and (docker_containers_string | trim | length > 0)

- name: "Start all previously running Docker containers"
Expand Down
35 changes: 11 additions & 24 deletions roles/backup2/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -221,16 +221,15 @@
{%- else -%}
{% endif %}
- name: Stop Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/stop{{ '?' + ignore_query_string if (ignore_query_string | length > 0) else '' }}"
method: POST
timeout: 600
ignore_errors: true
- name: Stop Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/stop_saltbox_docker_containers.yml"
vars:
_query_var: "{{ '?' + ignore_query_string if (ignore_query_string | length > 0) else '' }}"

- name: "Stop all running Docker containers"
ansible.builtin.shell: "docker stop {{ docker_containers_string }}"
ignore_errors: true
when: (docker_containers_string | trim | length > 0)

- name: "Notify | Saltbox Backup: Stopped Docker containers"
ansible.builtin.include_role:
Expand Down Expand Up @@ -309,12 +308,8 @@
ansible.builtin.wait_for:
timeout: 5

- name: Start Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/start"
method: POST
timeout: 600
ignore_errors: true
- name: Start Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/start_saltbox_docker_containers.yml"
when: (docker_containers_string | trim | length > 0)

- name: "Snapshot | Start all previously running Docker containers"
Expand Down Expand Up @@ -477,12 +472,8 @@
ansible.builtin.wait_for:
timeout: 5

- name: Start Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/start"
method: POST
timeout: 600
ignore_errors: true
- name: Start Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/start_saltbox_docker_containers.yml"
when: (docker_containers_string | trim | length > 0)

- name: "Start all previously running Docker containers"
Expand Down Expand Up @@ -578,12 +569,8 @@
ansible.builtin.wait_for:
timeout: 5

- name: Start Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/start"
method: POST
timeout: 600
ignore_errors: true
- name: Start Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/start_saltbox_docker_containers.yml"
when: (docker_containers_string | trim | length > 0)

- name: "Start all previously running Docker containers"
Expand Down
24 changes: 6 additions & 18 deletions roles/docker/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,8 @@
ansible.builtin.set_fact:
docker_running_containers: "{{ containers_list | default(docker_running_containers_ps.stdout) | default('') }}"

- name: Stop Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/stop"
method: POST
timeout: 600
ignore_errors: true
- name: Stop Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/stop_saltbox_docker_containers.yml"
when: docker_controller_service_running is defined and docker_controller_service_running

- name: Stop all running Docker containers
Expand Down Expand Up @@ -145,12 +141,8 @@
timeout: 600
ignore_errors: true

- name: Stop Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/stop"
method: POST
timeout: 600
ignore_errors: true
- name: Stop Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/stop_saltbox_docker_containers.yml"

- name: "Stop all Docker containers"
ansible.builtin.shell: docker stop $(docker ps -aq) &> /dev/null || true
Expand Down Expand Up @@ -185,12 +177,8 @@
timeout: "{{ docker_network_container_health_delay }}"
when: (docker_containers_gluetun | length > 0)

- name: Start Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/start"
method: POST
timeout: 600
ignore_errors: true
- name: Start Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/start_saltbox_docker_containers.yml"

- name: "Re-start all previously running Docker containers"
ansible.builtin.shell: "docker start {{ docker_running_containers.split() | difference(['ipv6nat']) | join(' ') }}"
Expand Down
8 changes: 2 additions & 6 deletions roles/hetzner_nfs/tasks/services_start.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,8 @@
ansible.builtin.wait_for:
timeout: "{{ docker_network_container_health_delay }}"

- name: Start Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/start"
method: POST
timeout: 600
ignore_errors: true
- name: Start Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/start_saltbox_docker_containers.yml"

- name: "Re-start all previously running Docker containers"
ansible.builtin.shell: 'docker start {{ docker_running_containers.stdout }}'
Expand Down
8 changes: 2 additions & 6 deletions roles/hetzner_nfs/tasks/services_stop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,8 @@
ignore_errors: true
when: docker_binary.stat.exists and docker_service_running

- name: Stop Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/stop"
method: POST
timeout: 600
ignore_errors: true
- name: Stop Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/stop_saltbox_docker_containers.yml"
when: docker_binary.stat.exists and docker_service_running and not (docker_running_containers.stdout | trim | length == 0)

- name: Stop all running Docker containers
Expand Down
8 changes: 2 additions & 6 deletions roles/remote/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,8 @@
ansible.builtin.set_fact:
containers_list: "{{ remote_docker_running_containers_ps.stdout }}"

- name: Stop Saltbox Containers
ansible.builtin.uri:
url: "{{ docker_controller_url }}/stop"
method: POST
timeout: 600
ignore_errors: true
- name: Stop Saltbox Docker containers
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/stop_saltbox_docker_containers.yml"
when: remote_docker_controller_service_running is defined and remote_docker_controller_service_running

- name: "Stop all running Docker containers"
Expand Down
5 changes: 1 addition & 4 deletions roles/unionfs/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,5 @@
when: (containers_list is defined)

- name: Docker Containers Start Tasks (no running containers)
ansible.builtin.uri:
url: "{{ docker_controller_url }}/start"
method: POST
timeout: 600
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/start_saltbox_docker_containers.yml"
when: (not containers_list is defined) and unionfs_docker_binary.stat.exists and unionfs_docker_service_running
8 changes: 2 additions & 6 deletions roles/unionfs/tasks/subtasks/docker/containers_start.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,8 @@
ansible.builtin.wait_for:
timeout: "{{ docker_network_container_health_delay }}"

- name: "Docker | Containers Start | Start Saltbox Containers"
ansible.builtin.uri:
url: "{{ docker_controller_url }}/start"
method: POST
timeout: 600
ignore_errors: true
- name: "Docker | Containers Start | Start Saltbox Docker containers"
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/start_saltbox_docker_containers.yml"
when: (remote_docker_controller_service_running is defined and remote_docker_controller_service_running)
or (unionfs_docker_controller_service_running is defined and unionfs_docker_controller_service_running)

Expand Down
8 changes: 2 additions & 6 deletions roles/unionfs/tasks/subtasks/docker/containers_stop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,8 @@
ansible.builtin.set_fact:
containers_list: "{{ unionfs_docker_running_containers_ps.stdout }}"

- name: "UnionFS | Docker | Container Stop | Stop Saltbox Containers"
ansible.builtin.uri:
url: "{{ docker_controller_url }}/stop"
method: POST
timeout: 600
ignore_errors: true
- name: "UnionFS | Docker | Container Stop | Stop Saltbox Docker containers"
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/stop_saltbox_docker_containers.yml"
when: (containers_list | trim | length > 0) and unionfs_docker_controller_service_running

- name: "UnionFS | Docker | Container Stop | Stop all running Docker containers"
Expand Down
Loading

0 comments on commit bcf8705

Please sign in to comment.