From a71519ca64957779eab3bcad4abc03f10c9e5b0d Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 27 Feb 2025 18:55:39 -0300 Subject: [PATCH] feat: add rclone volume docker plugin --- .ageboxreg.yml | 1 + files/docker/hoarder/docker-stack.yaml | 33 +++++++++++++++++++++++++ playbooks/setup/docker.yaml | 6 ++--- roles/docker/files/rclone.conf.agebox | Bin 0 -> 491 bytes roles/docker/tasks/docker_alpine.yaml | 1 + roles/docker/tasks/main.yaml | 28 +++++++++++++++++++++ 6 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 files/docker/hoarder/docker-stack.yaml create mode 100644 roles/docker/files/rclone.conf.agebox diff --git a/.ageboxreg.yml b/.ageboxreg.yml index d3cc70c..7267ee6 100644 --- a/.ageboxreg.yml +++ b/.ageboxreg.yml @@ -2,4 +2,5 @@ file_ids: - .env - files/docker/fedi/.env - roles/common/files/robo_key +- roles/docker/files/rclone.conf version: "1" diff --git a/files/docker/hoarder/docker-stack.yaml b/files/docker/hoarder/docker-stack.yaml new file mode 100644 index 0000000..e878427 --- /dev/null +++ b/files/docker/hoarder/docker-stack.yaml @@ -0,0 +1,33 @@ +services: + heimdall: + image: linuxserver/heimdall:latest + volumes: [configdata:/config] + networks: + - reverse_proxy + deploy: + rollback_config: + failure_action: continue + update_config: + delay: 2s + failure_action: rollback + order: start-first + placement: + constraints: + - node.labels.services_kind==${SERVICE_KIND:-common} + labels: + - traefik.enable=true + - traefik.http.routers.hoarder.rule=Host(`hoarder.alecodes.page`) + - traefik.http.services.hoarder.loadbalancer.server.port=80 + +volumes: + configdata: + driver: rclone + driver_opts: + remote: 'homelab-s3:docker-volume-heimdall' + allow_other: 'true' + vfs_cache_mode: full + poll_interval: 0 + +networks: + reverse_proxy: + external: true diff --git a/playbooks/setup/docker.yaml b/playbooks/setup/docker.yaml index d5c809a..73b37de 100644 --- a/playbooks/setup/docker.yaml +++ b/playbooks/setup/docker.yaml @@ -3,7 +3,7 @@ --- - name: Setup Docker hosts: docker - user: root + become: true roles: - docker vars: @@ -13,7 +13,7 @@ - name: Setup docker swarm manager hosts: docker_managers - user: root + become: true tasks: - name: Setup swarm manager include_role: @@ -22,7 +22,7 @@ - name: Setup docker swarm workers hosts: docker_workers - user: root + become: true tasks: - name: "Setup swarm workers" include_role: diff --git a/roles/docker/files/rclone.conf.agebox b/roles/docker/files/rclone.conf.agebox new file mode 100644 index 0000000000000000000000000000000000000000..1d15caae1a59334087fb644f7e71f8a3c01221cc GIT binary patch literal 491 zcmVSnPuaq;kHhsVXybBr> zbeVi;ZAZ4-w5EEvp=kXAL7|lTJGwk^o!|x1BTNp)MG-sZJ@7M!6~&%*=vn>5Ao(NdqtYv1bIWY$*{nJ`DkgE(SJ~sJobMA_<-sq h39AP8+VWfm`?~4(DO9+*0WZspf+2@6n#yuJJHfuo#N_}0 literal 0 HcmV?d00001 diff --git a/roles/docker/tasks/docker_alpine.yaml b/roles/docker/tasks/docker_alpine.yaml index 58fe2f2..07d7a8e 100644 --- a/roles/docker/tasks/docker_alpine.yaml +++ b/roles/docker/tasks/docker_alpine.yaml @@ -4,6 +4,7 @@ ansible.builtin.package: state: present name: + - fuse - docker - docker-cli-compose - py3-yaml diff --git a/roles/docker/tasks/main.yaml b/roles/docker/tasks/main.yaml index bdc01af..feab356 100644 --- a/roles/docker/tasks/main.yaml +++ b/roles/docker/tasks/main.yaml @@ -21,3 +21,31 @@ name: docker state: started enabled: true + +- name: Create rclone config directory + ansible.builtin.file: + path: /var/lib/docker-plugins/rclone/config + state: directory + mode: '0755' + +- name: Create rclone cache directory + ansible.builtin.file: + path: /var/lib/docker-plugins/rclone/cache + state: directory + mode: '0755' + +- name: Coping rclone config + copy: + src: files/rclone.conf + dest: /var/lib/docker-plugins/rclone/config/rclone.conf + mode: '0755' + owner: root + group: root + +- name: Install rclone docker plugin + community.docker.docker_plugin: + state: enable + plugin_name: rclone/docker-volume-rclone:amd64 + alias: rclone + plugin_options: + args: "-v"