feat: integrate Redis service for JuiceFS with Docker Compose and update configuration

This commit is contained in:
2025-03-14 16:55:57 +01:00
parent 9009954996
commit e1c5113f87
4 changed files with 68 additions and 2 deletions

View File

@ -42,6 +42,9 @@
hetzner_access_key: "{{ lookup('community.general.onepassword', 'mfk2qgnaplgtk6xmfc3r6w6neq', vault='j7nmhqlsjmp2r6umly5t75hzb4', field='AWS_ACCESS_KEY_ID') }}"
hetzner_secret_key: "{{ lookup('community.general.onepassword', 'mfk2qgnaplgtk6xmfc3r6w6neq', vault='j7nmhqlsjmp2r6umly5t75hzb4', field='AWS_SECRET_ACCESS_KEY') }}"
- name: Include JuiceFS Redis tasks
ansible.builtin.include_tasks: services/redis/redis.yml
- name: Format JuiceFS volume
ansible.builtin.command: >
juicefs format
@ -53,7 +56,7 @@
--trash-days=7
--dir-stats
--hash-prefix
sqlite3:///mnt/juicefs-metadata.sqlite myjfs
redis://127.0.0.1:6379/0 myjfs
become: true
when: not metadata_file.stat.exists

View File

@ -0,0 +1,22 @@
services:
juicefs-redis:
image: redis/redis:latest
restart: always
ports:
- "6379:6379"
volumes:
- /mnt/services/redis-data:/data
command: ["redis-server", "--appendonly", "yes", "--requirepass", "{{ REDIS_PASSWORD }}"]
environment:
- TZ=Europe/Amsterdam
healthcheck:
test: ["CMD", "redis-cli", "-a", "{{ REDIS_PASSWORD }}", "ping"]
interval: 30s
timeout: 10s
retries: 3
start_period: 5s
networks:
- juicefs-network
networks:
juicefs-network:

View File

@ -0,0 +1,40 @@
---
- name: Deploy Redis for JuiceFS
block:
- name: Set Redis facts
ansible.builtin.set_fact:
redis_service_dir: "{{ ansible_env.HOME }}/services/juicefs-redis"
redis_data_dir: "/mnt/object_storage/services/redis"
redis_password: "{{ lookup('community.general.onepassword', '4cioblm633bdkl6put35lk6ql4', vault='j7nmhqlsjmp2r6umly5t75hzb4', field='password') }}"
- name: Create Redis service directory
ansible.builtin.file:
path: "{{ redis_service_dir }}"
state: directory
mode: "0755"
- name: Create Redis data directory
ansible.builtin.file:
path: "{{ redis_data_dir }}"
state: directory
mode: "0755"
- name: Deploy Redis docker-compose.yml
ansible.builtin.template:
src: redis/docker-compose.yml.j2
dest: "{{ redis_service_dir }}/docker-compose.yml"
mode: "0644"
register: redis_compose
vars:
REDIS_PASSWORD: "{{ redis_password }}"
- 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