Skip to content

Commit

Permalink
Merge pull request #23 from tigattack/feat/install_mergerfs_tools
Browse files Browse the repository at this point in the history
  • Loading branch information
tigattack authored Feb 18, 2025
2 parents 25a0749 + 96df202 commit 08abe1c
Show file tree
Hide file tree
Showing 6 changed files with 83 additions and 0 deletions.
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,27 @@ Default: `true`

Whether the role should install [prerequisites](defaults/main.yml) for you. If in doubt, leave on default.

### `mergerfs_install_tools`

Default: `false`

Whether to install [mergerfs-tools](https://github.com/trapexit/mergerfs-tools).

> [!NOTE]
> As mergerfs-tools must be cloned from GitHub to install, this role will also ensure `git` is installed on the host if this variable is `true`.

### `mergerfs_tools_github_repo_url`

Default: [`https://github.com/trapexit/mergerfs-tools`](https://github.com/trapexit/mergerfs-tools)

URL of the mergerfs-tools GitHub repository. Used to clone the repository.

### `mergerfs_tools_clone_dir`

Default: `/tmp/mergerfs-tools`

Temporary directory to clone mergerfs-tools into before install.

## Dependencies

None.
Expand Down
10 changes: 10 additions & 0 deletions defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,13 @@ mergerfs_install_prerequisites: true

# Whether mergerfs mounts not listed in `mergerfs_mounts` should be unmounted.
mergerfs_remove_undefined_mounts: false

# Whether to install mergerfs-tools.
mergerfs_install_tools: false

# URL of the mergerfs-tools GitHub repository.
# Used to clone the repository.
mergerfs_tools_github_repo_url: https://github.com/trapexit/mergerfs-tools

# Temporary directory to clone mergerfs-tools into before install.
mergerfs_tools_clone_dir: /tmp/mergerfs-tools
17 changes: 17 additions & 0 deletions meta/argument_specs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,20 @@ argument_specs:
type: bool
default: false
description: 'Whether mergerfs mounts not listed in `mergerfs_mounts` should be unmounted.'

mergerfs_install_tools:
type: bool
default: false
description: 'Whether to install mergerfs-tools.'

mergerfs_tools_github_repo_url:
type: str
default: https://github.com/trapexit/mergerfs-tools
description:
- URL of the mergerfs-tools GitHub repository.
- Used to clone the repository.

mergerfs_tools_clone_dir:
type: str
default: /tmp/mergerfs-tools
description: 'Temporary directory to clone mergerfs-tools into before install.'
1 change: 1 addition & 0 deletions molecule/default/converge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@
branches:
- /mnt/data*
options: allow_other,use_ino
mergerfs_install_tools: true
roles:
- role: ansible-role-mergerfs
29 changes: 29 additions & 0 deletions tasks/install_mergerfs_tools.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---

- name: Ensure git is installed
ansible.builtin.package:
name: git
state: present

- name: Clone mergerfs-tools # noqa latest[git]
ansible.builtin.git:
repo: >-
{{
mergerfs_tools_github_repo_url if mergerfs_tools_github_repo_url.endswith('.git')
else (mergerfs_tools_github_repo_url + '.git')
}}
dest: "{{ mergerfs_tools_clone_dir }}"

- name: Discover tool files
ansible.builtin.find:
paths: "{{ mergerfs_tools_clone_dir }}/src"
file_type: file
register: mergerfs_tools_files

- name: Install mergerfs-tools
ansible.builtin.command:
cmd: "install -v -m 0755 -o root -g root -D -C {{ item }} /usr/local/bin"
chdir: "{{ mergerfs_tools_clone_dir }}/src"
loop: "{{ mergerfs_tools_files.files | map(attribute='path') | map('basename') }}"
register: mergerfs_tools_install
changed_when: mergerfs_tools_install.stdout != ""
5 changes: 5 additions & 0 deletions tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@
ansible.builtin.include_tasks:
file: install_{{ ansible_os_family | lower }}.yml

- name: Install mergerfs-tools
ansible.builtin.include_tasks:
file: install_mergerfs_tools.yml
when: mergerfs_install_tools

- name: Mount mergerfs filesystems
ansible.posix.mount:
fstype: fuse.mergerfs
Expand Down

0 comments on commit 08abe1c

Please sign in to comment.