volumes get backed up to minio successfully

test
chatton 3 years ago
parent 655b9499c0
commit cbbb65a9b7

@ -4,12 +4,28 @@ services:
linkding: linkding:
labels: labels:
ie.cianhatton.backup.enabled: "true" ie.cianhatton.backup.enabled: "true"
container_name: "linkding" container_name: linkding
image: sissbruecker/linkding:latest image: sissbruecker/linkding:latest
ports: ports:
- "9090:9090" - "9090:9090"
volumes: volumes:
- "data:/etc/linkding/data" - "data:/etc/linkding/data"
restart: unless-stopped restart: unless-stopped
minio:
image: minio/minio:latest
container_name: minio
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio_storage:/data
environment:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: "*!3^wYe&dJ2H9D9aDC68Gh6!v7ydB^eK5G^"
MINIO_API_ROOT_ACCESS: "on"
MINIO_BROWSER_REDIRECT_URL: http://127.0.0.1:9000
command: server --console-address ":9001" /data
volumes: volumes:
data: data:
minio_storage:

@ -1,7 +1,6 @@
--- ---
- name: Backup Docker Volumes. - name: Backup Docker Volumes.
hosts: localhost hosts: localhost
# become: true
tasks: tasks:
- name: Find Containers With Backup Label - name: Find Containers With Backup Label
@ -20,7 +19,6 @@
name: docker_s3_backup name: docker_s3_backup
vars: vars:
container_backup: "{{ container_item | regex_replace('^\\/', '') }}" container_backup: "{{ container_item | regex_replace('^\\/', '') }}"
docker_backup_retain_count: 7
with_items: "{{ container_names }}" with_items: "{{ container_names }}"
loop_control: loop_control:
loop_var: container_item loop_var: container_item

@ -1,13 +1,12 @@
--- # the aws region. For minio this will always be us-east-1.
# defaults file for docker_s3_backup
docker_backup_aws_s3_region: "us-east-1" docker_backup_aws_s3_region: "us-east-1"
# the name of the bucket in minio or s3
docker_backup_aws_s3_bucket: "backups" docker_backup_aws_s3_bucket: "backups"
# put backups locally in this directory. # put backups locally in this directory.
docker_backup_host_backup_directory: "./backups" docker_backup_host_backup_directory: "/tmp"
docker_backup_aws_s3_url: "" # the url of the minio server.
docker_backup_aws_s3_aws_access_key: "" docker_backup_aws_s3_url: "http://127.0.0.1:9000"
docker_backup_aws_s3_aws_secret_key: "" docker_backup_aws_s3_aws_access_key: "83meItmzcEgb1NdasSgl"
docker_backup_aws_s3_aws_secret_key: "lwdAJ60gMkcZxRZCHsC6CsdPw63Xuds6h6mksnSz"
docker_backup_aws_s3_permissions: [] docker_backup_aws_s3_permissions: []
docker_backup_aws_s3_encrypt: true docker_backup_aws_s3_encrypt: off

@ -1,11 +0,0 @@
galaxy_info:
author: Cian Hatton
description: Role which backs up a dockver volume to s3.
license: MIT
min_ansible_version: "2.1"
galaxy_tags: []
platforms:
- name: Debian
versions:
- all
dependencies: []

@ -1,7 +1,4 @@
--- ---
# https://docs.ansible.com/ansible/latest/collections/community/docker/docker_container_module.html#ansible-collections-community-docker-docker-container-module
# https://docs.docker.com/storage/volumes/#backup-restore-or-migrate-data-volumes
- name: Determine backup timestamp. - name: Determine backup timestamp.
ansible.builtin.set_fact: backup_time="{{ ansible_date_time.iso8601 }}" ansible.builtin.set_fact: backup_time="{{ ansible_date_time.iso8601 }}"
@ -57,34 +54,8 @@
permission: "{{ docker_backup_aws_s3_permissions }}" permission: "{{ docker_backup_aws_s3_permissions }}"
with_items: "{{ volume_mounts }}" with_items: "{{ volume_mounts }}"
- name: Remove local files.
# try and find latest volume based on the name. ansible.builtin.file:
- name: Fetch Volumes From S3. path: "{{ docker_backup_host_backup_directory }}/{{ item.Name }}-{{ backup_time }}.tar.gz"
when: docker_backup_retain_count is defined state: absent
amazon.aws.aws_s3:
bucket: "{{ docker_backup_aws_s3_bucket }}"
mode: list
prefix: "{{ item.Name }}/{{ item.Name }}"
aws_access_key: "{{ docker_backup_aws_s3_aws_access_key }}"
aws_secret_key: "{{ docker_backup_aws_s3_aws_secret_key }}"
region: "{{ docker_backup_aws_s3_region }}"
s3_url: "{{ docker_backup_aws_s3_url }}"
register: s3_list_outputs
with_items: "{{ volume_mounts }}" with_items: "{{ volume_mounts }}"
- name: Find keys to delete.
when: docker_backup_retain_count is defined
ansible.builtin.set_fact:
s3_keys_to_delete: "{{ s3_list_outputs.results | map(attribute='s3_keys') | keep_last(docker_backup_retain_count) | flatten }}"
- name: Delete old backups.
when: docker_backup_retain_count is defined
amazon.aws.aws_s3:
bucket: "{{ docker_backup_aws_s3_bucket }}"
aws_access_key: "{{ docker_backup_aws_s3_aws_access_key }}"
aws_secret_key: "{{ docker_backup_aws_s3_aws_secret_key }}"
region: "{{ docker_backup_aws_s3_region }}"
s3_url: "{{ docker_backup_aws_s3_url }}"
object: "{{ item }}"
mode: delobj
with_items: "{{ s3_keys_to_delete }}"

@ -1,2 +0,0 @@
---
# vars file for chatton.docker_backup
Loading…
Cancel
Save