diff --git a/config/ansible/tasks/servers/services/redis/redis.yml b/config/ansible/tasks/servers/services/redis/redis.yml index c712c6c..f7e833f 100644 --- a/config/ansible/tasks/servers/services/redis/redis.yml +++ b/config/ansible/tasks/servers/services/redis/redis.yml @@ -35,17 +35,33 @@ enabled: false register: juicefs_stop changed_when: juicefs_stop.changed + when: redis_compose.changed - - name: Stop Redis service - ansible.builtin.command: docker compose -f "{{ redis_service_dir }}/docker-compose.yml" down --remove-orphans - register: redis_stop - changed_when: redis_stop.rc == 0 + - name: List containers that are running + ansible.builtin.command: docker ps -q + register: docker_ps + changed_when: docker_ps.rc == 0 + when: redis_compose.changed + + - name: Stop all docker containers + ansible.builtin.command: docker stop {{ item }} + loop: "{{ docker_ps.stdout_lines }}" + register: docker_stop + changed_when: docker_stop.rc == 0 + when: redis_compose.changed + ignore_errors: true - name: Start Redis service ansible.builtin.command: docker compose -f "{{ redis_service_dir }}/docker-compose.yml" up -d register: redis_start changed_when: redis_start.rc == 0 + - name: Wait for Redis to be ready + ansible.builtin.wait_for: + host: localhost + port: 6379 + timeout: 30 + - name: Start juicefs.service to mount JuiceFS ansible.builtin.systemd: name: juicefs.service @@ -54,8 +70,9 @@ register: juicefs_start changed_when: juicefs_start.changed - - name: Wait for Redis to be ready - ansible.builtin.wait_for: - host: localhost - port: 6379 - timeout: 30 + - name: Restart containers that were stopped + ansible.builtin.command: docker start {{ item }} + loop: "{{ docker_stop.results | map(attribute='item') | list }}" + register: docker_restart + changed_when: docker_restart.rc == 0 + when: redis_compose.changed