95 lines
3.0 KiB
YAML
95 lines
3.0 KiB
YAML
---
|
|
- name: JuiceFS Installation and Configuration
|
|
block:
|
|
- name: Check if JuiceFS is already installed
|
|
ansible.builtin.command: which juicefs
|
|
register: juicefs_check
|
|
ignore_errors: true
|
|
changed_when: false
|
|
|
|
- name: Install JuiceFS using the automatic installer
|
|
ansible.builtin.shell: curl -sSL https://d.juicefs.com/install | sh -
|
|
register: juicefs_installation
|
|
when: juicefs_check.rc != 0
|
|
become: true
|
|
|
|
- name: Verify JuiceFS installation
|
|
ansible.builtin.command: juicefs version
|
|
register: juicefs_version
|
|
changed_when: false
|
|
when: juicefs_check.rc != 0 or juicefs_installation.changed
|
|
|
|
- name: Create mount directory
|
|
ansible.builtin.file:
|
|
path: /mnt/object_storage
|
|
state: directory
|
|
mode: "0755"
|
|
become: true
|
|
|
|
- name: Create cache directory
|
|
ansible.builtin.file:
|
|
path: /var/jfsCache
|
|
state: directory
|
|
mode: "0755"
|
|
become: true
|
|
|
|
- name: Configure JuiceFS network performance optimizations
|
|
ansible.builtin.sysctl:
|
|
name: "{{ item.name }}"
|
|
value: "{{ item.value }}"
|
|
state: present
|
|
reload: true
|
|
become: true
|
|
loop:
|
|
- { name: "net.core.rmem_max", value: "16777216" }
|
|
- { name: "net.core.wmem_max", value: "16777216" }
|
|
- { name: "net.ipv4.tcp_rmem", value: "4096 87380 16777216" }
|
|
- { name: "net.ipv4.tcp_wmem", value: "4096 65536 16777216" }
|
|
|
|
- name: Set JuiceFS facts
|
|
ansible.builtin.set_fact:
|
|
hetzner_access_key: "{{ lookup('community.general.onepassword', 'Hetzner Object Storage Bucket', vault='Dotfiles', field='AWS_ACCESS_KEY_ID') }}"
|
|
hetzner_secret_key:
|
|
"{{ lookup('community.general.onepassword', 'Hetzner Object Storage Bucket', vault='Dotfiles', field='AWS_SECRET_ACCESS_KEY')
|
|
}}"
|
|
redis_password: "{{ lookup('community.general.onepassword', 'JuiceFS (Redis)', vault='Dotfiles', field='password') }}"
|
|
|
|
- name: Create JuiceFS systemd service file
|
|
ansible.builtin.template:
|
|
src: templates/juicefs.service.j2
|
|
dest: /etc/systemd/system/juicefs.service
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
become: true
|
|
|
|
- name: Reload systemd daemon
|
|
ansible.builtin.systemd:
|
|
daemon_reload: true
|
|
become: true
|
|
|
|
- name: Include JuiceFS Redis tasks
|
|
ansible.builtin.include_tasks: services/redis/redis.yml
|
|
when: inventory_hostname == 'mennos-cloud-server'
|
|
|
|
- name: Enable and start JuiceFS service
|
|
ansible.builtin.systemd:
|
|
name: juicefs.service
|
|
enabled: true
|
|
state: started
|
|
become: true
|
|
|
|
- name: Check if JuiceFS is mounted
|
|
ansible.builtin.shell: df -h | grep /mnt/object_storage
|
|
become: true
|
|
register: mount_check
|
|
ignore_errors: true
|
|
changed_when: false
|
|
|
|
- name: Display mount status
|
|
ansible.builtin.debug:
|
|
msg: "JuiceFS is successfully mounted at /mnt/object_storage"
|
|
when: mount_check.rc == 0
|
|
tags:
|
|
- juicefs
|