diff options
Diffstat (limited to 'ansible/roles/resource-data/tasks/ssh-upload.yml')
-rw-r--r-- | ansible/roles/resource-data/tasks/ssh-upload.yml | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/ansible/roles/resource-data/tasks/ssh-upload.yml b/ansible/roles/resource-data/tasks/ssh-upload.yml new file mode 100644 index 00000000..8e04d5c0 --- /dev/null +++ b/ansible/roles/resource-data/tasks/ssh-upload.yml @@ -0,0 +1,59 @@ +--- +- name: Upload resources to infrastructure servers over ssh + block: + - name: Upload ssh private key + copy: + src: "{{ ansible_ssh_private_key_file }}" + dest: /root/.ssh/infra_to_resource.privkey + mode: 0600 + owner: root + group: root + remote_src: no + + - name: Unarchive resources + shell: > + ssh -o StrictHostKeyChecking=no -o BatchMode=yes + -i /root/.ssh/infra_to_resource.privkey + {{ hostvars[groups.resources.0].ansible_host }} + 'cat "{{ hostvars[groups.resources.0].resources_dir }}/{{ hostvars[groups.resources.0].resources_filename }}"' + | tar -C "{{ app_data_path }}" -xf - + args: + warn: False + when: not resources_data_check.stat.exists + + - name: Unarchive auxiliary resources + shell: > + ssh -i /root/.ssh/infra_to_resource.privkey + {{ hostvars[groups.resources.0].ansible_host }} + 'cat "{{ hostvars[groups.resources.0].resources_dir }}/{{ hostvars[groups.resources.0].aux_resources_filename }}"' + | tar -C "{{ aux_data_path }}" -xf - + when: > + hostvars[groups.resources.0].aux_resources_filename is defined + and aux_data_path is defined and aux_data_path is not none + and hostvars[groups.resources.0].aux_file_presence.stat.exists + and not aux_resources_data_check.stat.exists + args: + warn: False + + rescue: + - name: Removing the resources data due to an error - so the next run can try again + command: /bin/false + register: upload_failed + + always: + - name: Remove the ssh private key + file: + path: /root/.ssh/infra_to_resource.privkey + state: absent + + - name: Remove the resource data on error + file: + path: "{{ app_data_path }}" + state: absent + when: upload_failed is defined + + - name: Remove the auxilliary resource data on error + file: + path: "{{ aux_data_path }}" + state: absent + when: upload_failed is defined |