--- - name: Set GeeseFS version ansible.builtin.set_fact: geesefs_desired_version: "0.43.0" - name: Set GeeseFS paths and URLs ansible.builtin.set_fact: geesefs_download_url: "https://github.com/yandex-cloud/geesefs/releases/download/v{{ geesefs_desired_version }}/geesefs-linux-arm64" geesefs_install_path: "/usr/local/bin/geesefs" - name: Check if GeeseFS is installed ansible.builtin.command: which geesefs register: geesefs_check ignore_errors: true changed_when: false failed_when: false - name: Check GeeseFS version if installed ansible.builtin.command: geesefs --version register: geesefs_version ignore_errors: true changed_when: false failed_when: false when: geesefs_check.rc is defined and geesefs_check.rc == 0 - name: Set needs_installation fact ansible.builtin.set_fact: needs_installation: "{{ geesefs_check.rc is not defined or geesefs_check.rc != 0 or (geesefs_version.stdout is defined and 'geesefs version ' + geesefs_desired_version not in geesefs_version.stdout) }}" - name: Create temporary directory for download ansible.builtin.tempfile: state: directory suffix: geesefs register: temp_dir when: needs_installation | bool - name: Download GeeseFS ansible.builtin.get_url: url: "{{ geesefs_download_url }}" dest: "{{ temp_dir.path }}/geesefs" mode: '0755' when: needs_installation | bool - name: Install GeeseFS to system path ansible.builtin.copy: src: "{{ temp_dir.path }}/geesefs" dest: "{{ geesefs_install_path }}" mode: '0755' remote_src: true become: true when: needs_installation | bool - name: Clean up temporary directory ansible.builtin.file: path: "{{ temp_dir.path }}" state: absent when: temp_dir.path is defined - name: Create mount directory if it doesn't exist ansible.builtin.file: path: /mnt/object_storage state: directory mode: '0755' become: true - name: Create GeeseFS mount script ansible.builtin.template: src: templates/geesefs-mount.sh.j2 dest: /usr/local/bin/geesefs-mount.sh mode: '0700' owner: root group: root become: true no_log: true - name: Create GeeseFS systemd service ansible.builtin.template: src: templates/geesefs-mount.service.j2 dest: /etc/systemd/system/geesefs-mount.service mode: '0644' owner: root group: root become: true register: geesefs_service_file - name: Systemd daemon-reload ansible.builtin.systemd: daemon_reload: true become: true when: geesefs_service_file.changed - name: Enable and start GeeseFS mount service ansible.builtin.systemd: name: geesefs-mount enabled: true state: started become: true