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

This commit is contained in:
Menno van Leeuwen 2025-03-14 16:55:57 +01:00
parent 9009954996
commit e1c5113f87
Signed by: vleeuwenmenno
SSH Key Fingerprint: SHA256:OJFmjANpakwD3F2Rsws4GLtbdz1TJ5tkQF0RZmF0TRE
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

View File

@ -5,7 +5,8 @@ Before=docker.service
[Service]
Type=simple
ExecStart=/usr/local/bin/juicefs mount sqlite3:///mnt/juicefs-metadata.sqlite /mnt/object_storage --cache-dir=/var/jfsCache --buffer-size=1024 --prefetch=2 --cache-size=204800 --attr-cache=3 --entry-cache=3 --open-cache=3 --no-bgjob
Environment="REDIS_PASSWORD={{ redis_password }}"
ExecStart=/usr/local/bin/juicefs mount redis://localhost:6379/0 /mnt/object_storage --cache-dir=/var/jfsCache --buffer-size=1024 --prefetch=4 --cache-size=204800 --attr-cache=3 --entry-cache=3 --open-cache=3
Restart=on-failure
[Install]