diff --git a/roles/docker_s3_volume_restore/tasks/main.yml b/roles/docker_s3_volume_restore/tasks/main.yml index 33b6e98..bdb2a7c 100644 --- a/roles/docker_s3_volume_restore/tasks/main.yml +++ b/roles/docker_s3_volume_restore/tasks/main.yml @@ -40,6 +40,7 @@ - debug: msg="{{ container_s3_keys }}" - set_fact: volume_names="{{ docker_volume_s3_restores | map(attribute='volume_name') }}" + # remove existing values so we can determine the s3 key automatically/ - set_fact: docker_volume_s3_restores="{{ [] }}" - set_fact: @@ -50,63 +51,58 @@ - debug: msg="{{ docker_volume_s3_restores }}" -#- set_fact: -# volume_details: "{{ volume_details |default([]) + [ {'mount': item.0, 's3_key': item.1} ] }}" -# with_together: -# - "{{ volume_mounts }}" -# - "{{ container_s3_keys }}" - -# -#- name: Create directories for /tmp file -# file: -# path: '/tmp/{{ item.s3_key | dirname }}' -# state: directory -# mode: '0755' -# with_items: '{{ docker_volume_s3_restores }}' -# -#- name: Download archive from S3 -# amazon.aws.aws_s3: -# bucket: "{{ docker_s3_volume_restore_aws_s3_bucket }}" -# object: "{{ item.s3_key }}" -# aws_access_key: "{{ docker_s3_volume_restore_aws_s3_aws_access_key }}" -# aws_secret_key: "{{ docker_s3_volume_restore_aws_s3_aws_secret_key }}" -# region: "{{ docker_s3_volume_restore_aws_s3_region }}" -# s3_url: "{{ docker_s3_volume_restore_aws_s3_url }}" -# mode: get -# dest: "/tmp/{{ item.s3_key }}" -# register: get_out -# with_items: "{{ docker_volume_s3_restores }}" -# -#- name: Remove contents of volumes -# community.docker.docker_container: -# name: "restore-container-{{ item.volume_name }}-{{ 10 | random }}" -# image: ubuntu -# command: "rm -rf ./*" -# auto_remove: true -# detach: false # block until this container exists. -# state: started -# # start inside the directory we want to wipe -# working_dir: "/data" -# volumes: -# - "{{ item.volume_name }}:/data" -# with_items: "{{ docker_volume_s3_restores }}" -# -#- name: Restore contents of volumes -# community.docker.docker_container: -# name: "restore-container-{{ item.volume_name }}-{{ 10 | random }}" -# image: ubuntu -# # extract the tar into the volume. -# command: "tar xvf /tmp/{{ item.s3_key }} -C /data --strip-components 1" -# auto_remove: true -# detach: false # block until this container exists. -# state: started -# volumes: -# - "{{ item.volume_name }}:/data" -# - /tmp:/tmp -# with_items: "{{ docker_volume_s3_restores }}" -# -#- name: Remove uploaded files from /tmp -# file: -# path: '/tmp/{{ item.s3_key }}' -# state: absent -# with_items: '{{ docker_volume_s3_restores }}' + + +- name: Create directories for /tmp file + file: + path: '/tmp/{{ item.s3_key | dirname }}' + state: directory + mode: '0755' + with_items: '{{ docker_volume_s3_restores }}' + +- name: Download archive from S3 + amazon.aws.aws_s3: + bucket: "{{ docker_s3_volume_restore_aws_s3_bucket }}" + object: "{{ item.s3_key }}" + aws_access_key: "{{ docker_s3_volume_restore_aws_s3_aws_access_key }}" + aws_secret_key: "{{ docker_s3_volume_restore_aws_s3_aws_secret_key }}" + region: "{{ docker_s3_volume_restore_aws_s3_region }}" + s3_url: "{{ docker_s3_volume_restore_aws_s3_url }}" + mode: get + dest: "/tmp/{{ item.s3_key }}" + register: get_out + with_items: "{{ docker_volume_s3_restores }}" + +- name: Remove contents of volumes + community.docker.docker_container: + name: "restore-container-{{ item.volume_name }}-{{ 10 | random }}" + image: ubuntu + command: "rm -rf ./*" + auto_remove: true + detach: false # block until this container exists. + state: started + # start inside the directory we want to wipe + working_dir: "/data" + volumes: + - "{{ item.volume_name }}:/data" + with_items: "{{ docker_volume_s3_restores }}" + +- name: Restore contents of volumes + community.docker.docker_container: + name: "restore-container-{{ item.volume_name }}-{{ 10 | random }}" + image: ubuntu + # extract the tar into the volume. + command: "tar xvf /tmp/{{ item.s3_key }} -C /data --strip-components 1" + auto_remove: true + detach: false # block until this container exists. + state: started + volumes: + - "{{ item.volume_name }}:/data" + - /tmp:/tmp + with_items: "{{ docker_volume_s3_restores }}" + +- name: Remove uploaded files from /tmp + file: + path: '/tmp/{{ item.s3_key }}' + state: absent + with_items: '{{ docker_volume_s3_restores }}'