diff --git a/group_vars/all.example b/group_vars/all.example index 5842d72..44956da 100644 --- a/group_vars/all.example +++ b/group_vars/all.example @@ -1,11 +1,11 @@ --- poa_role: "bootnode|validator|moc|explorer|netstat" -#AWS Key +#For Backups access_key: "KEY_NAME" secret_key: "KEY_SECRET" - s3_bucket: "BUCKET_NAME" +node_name: "NODE_NAME" #For HFs MAIN_REPO_FETCH: "poanetwork" diff --git a/group_vars/backup-parity.example b/group_vars/backup-parity.example new file mode 100644 index 0000000..828795f --- /dev/null +++ b/group_vars/backup-parity.example @@ -0,0 +1,13 @@ +--- +# bootnode | moc | validator | explorer | netstat +poa_role: "moc" + +# backup modes +backup_parity_data: true +backup_parity_blocks: true + +# AWS +access_key: "KEY_NAME" +secret_key: "KEY_SECRET" +s3_bucket: "BUCKET_NAME" +node_name: "NODE_NAME" diff --git a/group_vars/hf-spec-change.example b/group_vars/hf-spec-change.example new file mode 100644 index 0000000..f01b40a --- /dev/null +++ b/group_vars/hf-spec-change.example @@ -0,0 +1,7 @@ +--- +# bootnode | moc | validator | explorer | netstat +poa_role: "moc" + +# repo to fetch HFs from +MAIN_REPO_FETCH: "poanetwork" +GENESIS_BRANCH: "master" diff --git a/roles/backup-parity/tasks/main.yml b/roles/backup-parity/tasks/main.yml index 4f84961..19d352d 100644 --- a/roles/backup-parity/tasks/main.yml +++ b/roles/backup-parity/tasks/main.yml @@ -1,37 +1,76 @@ --- +# initial checks +- name: Check that the netstats service is installed + stat: + path: /etc/systemd/system/poa-netstats.service + register: netstats_service_file + +- name: Check that parity is running + shell: "systemctl is-active poa-parity" + register: parity_service_active + +# stop services - name: Shutdown poa-netstats service service: name=poa-netstats state=stopped + when: netstats_service_file.stat.exists - name: Shutdown poa-parity service service: name=poa-parity state=stopped +# make backups - name: Create backup directory file: path=/data state=directory -- name: Create blockchain archive +- name: Create parity_data archive archive: format: gz path: /home/{{ poa_role }}/parity_data dest: "/data/parity_data.tar.gz" + when: backup_parity_data == true -- name: Upload to s3 +- name: Export parity blocks + shell: "cd /home/{{ poa_role }}; ./parity --config node.toml export blocks blocks.rlp" + when: backup_parity_blocks == true + +- name: Create parity blocks archive + archive: + format: gz + path: /home/{{ poa_role }}/blocks.rlp + dest: "/data/parity_blocks.rlp.gz" + when: backup_parity_blocks == true + +# start services +- name: Launch poa-parity service + service: name=poa-parity state=started + when: parity_service_active == "active" + +- name: Launch poa-netstats service + service: name=poa-netstats state=started + when: netstats_service_file.stat.exists + +# upload backups to s3 +- name: Upload parity_data to s3 s3: aws_access_key: "{{ access_key }}" aws_secret_key: "{{ secret_key }}" bucket: "{{ s3_bucket }}" - object: "/parity_data-{{ date }}.tar.gz" + object: "/{{ date }}-{{ poa_role }}-{{ node_name }}-parity_data.tar.gz" src: "/data/parity_data.tar.gz" mode: put - ignore_errors: yes + when: backup_parity_data == true +- name: Upload parity blocks to s3 + s3: + aws_access_key: "{{ access_key }}" + aws_secret_key: "{{ secret_key }}" + bucket: "{{ s3_bucket }}" + object: "/{{ date }}-{{ poa_role }}-{{ node_name }}-parity_blocks.rlp.gz" + src: "/data/parity_blocks.rlp.gz" + mode: put + when: backup_parity_blocks == true + +# Cleanup - name: Clean local backup storage file: state: absent path: "/data/" - -- name: Launch poa-parity service - service: name=poa-parity state=started - -- name: Launch poa-netstats service - service: name=poa-netstats state=started - diff --git a/site.yml b/site.yml index d272c4d..67571ed 100644 --- a/site.yml +++ b/site.yml @@ -10,7 +10,7 @@ vars: date: "{{ lookup('pipe', 'date -u +%Y%m%d-%H%M%S') }}" home: "/home/{{ poa_role }}" - user: root + user: ubuntu become: true become_user: root roles: