Skip to content

Commit

Permalink
feat: Add rclone role
Browse files Browse the repository at this point in the history
  • Loading branch information
konradasb committed Jun 21, 2024
1 parent 0c78b96 commit ef93b6f
Show file tree
Hide file tree
Showing 7 changed files with 165 additions and 0 deletions.
27 changes: 27 additions & 0 deletions roles/rclone/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# rclone

Ansible role for configuring [rclone](https://rclone.org/).

## Requirements

None.

## Dependencies

None.

## Role Variables

Refer to [defaults/main.yml](defaults/main.yml) for a list of variables along with documentation.

## Example Playbook

```yaml
- hosts: all
roles:
- role: hostinger.common.rclone
```
## License
See [LICENSE](../../LICENSE)
17 changes: 17 additions & 0 deletions roles/rclone/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
rclone_arch: amd64
rclone_url: https://github.com/rclone/rclone/releases/download/v{{ rclone_version }}/rclone-v{{ rclone_version }}-{{ rclone_os }}-{{ rclone_arch }}.zip
rclone_version: 1.67.0
rclone_os: linux
rclone_install_dir: /opt/rclone/{{ rclone_version }}
rclone_owner: root
rclone_group: root
rclone_config_dir: /etc/rclone
rclone_remotes: {}
# rclone_remotes:
# - name: example
# opts:
# type: drive
# token: ' {"access_token":"","token_type":"","refresh_token":"","expiry":""}'
# client_secret: 67890
# client_id: 12345
22 changes: 22 additions & 0 deletions roles/rclone/meta/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
galaxy_info:
role_name: rclone
author: hostinger
description: Ansible role for configuring rclone.
license: license (MIT)
min_ansible_version: "2.10"
platforms:
- name: EL
versions:
- all
- name: Fedora
versions:
- all
- name: Debian
versions:
- all
- name: Ubuntu
versions:
- all
galaxy_tags:
- rclone
27 changes: 27 additions & 0 deletions roles/rclone/molecule/default/converge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
- name: Converge
hosts:
- all

pre_tasks:
- name: Update apt cache
ansible.builtin.apt:
update_cache: yes
when: ansible_os_family == 'Debian' or ansible_os_family == 'Ubuntu'

- name: Install unzip
ansible.builtin.package:
name: unzip
state: present

roles:
- rclone

vars:
rclone_remotes:
- name: example
opts:
type: drive
token: ' {"access_token":"","token_type":"","refresh_token":"","expiry":""}'
client_secret: 67890
client_id: 12345
19 changes: 19 additions & 0 deletions roles/rclone/molecule/default/molecule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: default
image: geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu2204}-ansible:latest
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
command: ${MOLECULE_DOCKER_COMMAND:-""}
cgroupns_mode: host
pre_build_image: true
privileged: true
platform: amd64
provisioner:
name: ansible
playbooks:
converge: ${MOLECULE_PLAYBOOK:-converge.yml}
46 changes: 46 additions & 0 deletions roles/rclone/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
- name: Create directories
ansible.builtin.file:
name: "{{ item }}"
mode: 0755
owner: "{{ rclone_owner }}"
group: "{{ rclone_group }}"
state: directory
loop:
- "{{ rclone_install_dir }}"
- "{{ rclone_config_dir }}"

- name: Download tarball
ansible.builtin.get_url:
url: "{{ rclone_url }}"
dest: "{{ rclone_install_dir }}/rclone.zip"
mode: 0644
owner: "{{ rclone_owner }}"
group: "{{ rclone_group }}"
timeout: 30

- name: Unarchive tarball
ansible.builtin.unarchive:
src: "{{ rclone_install_dir }}/rclone.zip"
remote_src: true
dest: "{{ rclone_install_dir }}"
creates: "{{ rclone_install_dir }}/rclone-v{{ rclone_version }}-linux-{{
rclone_arch }}"
owner: "{{ rclone_owner }}"
group: "{{ rclone_group }}"

- name: Create symlink to binary
ansible.builtin.file:
src: "{{ rclone_install_dir }}/rclone-v{{ rclone_version }}-linux-{{ rclone_arch }}/rclone"
dest: /usr/local/bin/rclone
mode: 0755
state: link
force: true

- name: Template config file
ansible.builtin.template:
src: rclone.conf.j2
dest: "{{ rclone_config_dir }}/rclone.conf"
mode: 0644
owner: "{{ rclone_owner }}"
group: "{{ rclone_group }}"
7 changes: 7 additions & 0 deletions roles/rclone/templates/rclone.conf.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{% for remote in rclone_remotes %}
[{{ remote.name }}]
{% for key, value in remote.opts.items() %}
{{ key }} = {{ value }}
{% endfor %}

{% endfor %}

0 comments on commit ef93b6f

Please sign in to comment.