feat: integrate Redis service for JuiceFS with Docker Compose and update configuration
This commit is contained in:
parent
9009954996
commit
e1c5113f87
@ -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
|
||||
|
||||
|
@ -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:
|
40
config/ansible/tasks/servers/services/redis/redis.yml
Normal file
40
config/ansible/tasks/servers/services/redis/redis.yml
Normal 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
|
@ -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]
|
||||
|
Loading…
x
Reference in New Issue
Block a user