- 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 - args: warn: false # Suppress warnings about using shell/curl 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: Check if JuiceFS is already formatted ansible.builtin.stat: path: /mnt/juicefs-metadata.sqlite register: metadata_file - name: Set JuiceFS facts ansible.builtin.set_fact: 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: Format JuiceFS volume ansible.builtin.command: > juicefs format --storage s3 --capacity=5000 --bucket https://mvl-sh.hel1.your-objectstorage.com --access-key {{ hetzner_access_key }} --secret-key {{ hetzner_secret_key }} --trash-days=7 --dir-stats --hash-prefix sqlite3:///mnt/juicefs-metadata.sqlite myjfs become: true when: not metadata_file.stat.exists - 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: 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