--- - 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-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