--- - name: Deploy Redis for JuiceFS block: - name: Set Redis facts ansible.builtin.set_fact: redis_service_dir: "{{ ansible_env.HOME }}/.services/juicefs-redis" redis_password: "{{ lookup('community.general.onepassword', 'JuiceFS (Redis)', vault='Dotfiles', field='password') }}" - name: Create Redis service directory ansible.builtin.file: path: "{{ redis_service_dir }}" state: directory mode: "0755" - name: Deploy Redis docker-compose.yml ansible.builtin.template: src: docker-compose.yml.j2 dest: "{{ redis_service_dir }}/docker-compose.yml" mode: "0644" register: redis_compose vars: REDIS_PASSWORD: "{{ redis_password }}" - name: Check if juicefs.service exists ansible.builtin.stat: path: /etc/systemd/system/juicefs.service register: juicefs_service_stat - name: Stop juicefs.service to umount JuiceFS ansible.builtin.systemd: name: juicefs.service state: stopped enabled: false register: juicefs_stop changed_when: juicefs_stop.changed when: redis_compose.changed and juicefs_service_stat.stat.exists - 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 state: started enabled: true register: juicefs_start changed_when: juicefs_start.changed when: juicefs_service_stat.stat.exists - 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 tags: - services - redis