diff --git a/example/docker-compose.yml b/example/docker-compose.yml index 67bc0e4..f7bba31 100644 --- a/example/docker-compose.yml +++ b/example/docker-compose.yml @@ -4,12 +4,28 @@ services: linkding: labels: ie.cianhatton.backup.enabled: "true" - container_name: "linkding" + container_name: linkding image: sissbruecker/linkding:latest ports: - "9090:9090" volumes: - "data:/etc/linkding/data" 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: data: + minio_storage: diff --git a/playbooks/backup-docker-volumes.yml b/playbooks/backup-docker-volumes.yml index c473f41..9ed1e79 100644 --- a/playbooks/backup-docker-volumes.yml +++ b/playbooks/backup-docker-volumes.yml @@ -1,7 +1,6 @@ --- - name: Backup Docker Volumes. hosts: localhost -# become: true tasks: - name: Find Containers With Backup Label @@ -20,7 +19,6 @@ name: docker_s3_backup vars: container_backup: "{{ container_item | regex_replace('^\\/', '') }}" - docker_backup_retain_count: 7 with_items: "{{ container_names }}" loop_control: loop_var: container_item diff --git a/roles/docker_s3_backup/defaults/main.yml b/roles/docker_s3_backup/defaults/main.yml index 7182645..e1aa3dd 100644 --- a/roles/docker_s3_backup/defaults/main.yml +++ b/roles/docker_s3_backup/defaults/main.yml @@ -1,13 +1,12 @@ ---- -# defaults file for docker_s3_backup +# the aws region. For minio this will always be 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" - - # put backups locally in this directory. -docker_backup_host_backup_directory: "./backups" -docker_backup_aws_s3_url: "" -docker_backup_aws_s3_aws_access_key: "" -docker_backup_aws_s3_aws_secret_key: "" +docker_backup_host_backup_directory: "/tmp" +# the url of the minio server. +docker_backup_aws_s3_url: "http://127.0.0.1:9000" +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_encrypt: true +docker_backup_aws_s3_encrypt: off diff --git a/roles/docker_s3_backup/meta/main.yml b/roles/docker_s3_backup/meta/main.yml deleted file mode 100644 index 4ea5983..0000000 --- a/roles/docker_s3_backup/meta/main.yml +++ /dev/null @@ -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: [] diff --git a/roles/docker_s3_backup/tasks/main.yml b/roles/docker_s3_backup/tasks/main.yml index ef82c2f..53e81ed 100644 --- a/roles/docker_s3_backup/tasks/main.yml +++ b/roles/docker_s3_backup/tasks/main.yml @@ -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. ansible.builtin.set_fact: backup_time="{{ ansible_date_time.iso8601 }}" @@ -57,34 +54,8 @@ permission: "{{ docker_backup_aws_s3_permissions }}" with_items: "{{ volume_mounts }}" - -# try and find latest volume based on the name. -- name: Fetch Volumes From S3. - when: docker_backup_retain_count is defined - 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 +- name: Remove local files. + ansible.builtin.file: + path: "{{ docker_backup_host_backup_directory }}/{{ item.Name }}-{{ backup_time }}.tar.gz" + state: absent 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 }}" diff --git a/roles/docker_s3_backup/vars/main.yml b/roles/docker_s3_backup/vars/main.yml deleted file mode 100644 index 045ab9b..0000000 --- a/roles/docker_s3_backup/vars/main.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -# vars file for chatton.docker_backup