98 lines
2.7 KiB
YAML
98 lines
2.7 KiB
YAML
---
|
|
- 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: needs_installation | bool and 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
|