diff --git a/semaphore.yaml b/semaphore.yaml index 6d1b7ed..c907817 100644 --- a/semaphore.yaml +++ b/semaphore.yaml @@ -5,115 +5,134 @@ gather_facts: true tasks: - - include_vars: vars/semaphore/variable.yaml + - name: Cleanup semaphore + block: + - include_vars: vars/semaphore/variable.yaml - - name: Search for volume's backup directories - become: yes - find: - paths: "{{ local_backup }}" - file_type: directory - recurse: false - register: backup_dirs + - name: Search for volume's backup directories + become: yes + find: + paths: "{{ local_backup }}" + file_type: directory + recurse: false + register: backup_dirs - - name: Copy backup files - become: yes - copy: - remote_src: true - src: "{{ item.path }}" - dest: "{{ backup_dir }}" - loop: "{{ backup_dirs.files }}" - loop_control: - label: "{{ item.path }}" + - name: Copy backup files + become: yes + copy: + remote_src: true + src: "{{ item.path }}" + dest: "{{ backup_dir }}" + loop: "{{ backup_dirs.files }}" + loop_control: + label: "{{ item.path }}" - - name: Cleanup volume's backup directories - become: yes - file: - path: "{{ item.path }}" - state: absent - loop: "{{ backup_dirs.files }}" - loop_control: - label: "{{ item.path }}" + - name: Cleanup volume's backup directories + become: yes + file: + path: "{{ item.path }}" + state: absent + loop: "{{ backup_dirs.files }}" + loop_control: + label: "{{ item.path }}" - - name: Correct directory owner - become: yes - file: - path: "{{ backup_dir }}" - owner: chris - group: chris - recurse: yes + - name: Correct directory owner + become: yes + file: + path: "{{ backup_dir }}" + owner: chris + group: chris + recurse: yes - - name: Register new backup directories - find: - paths: "{{ backup_dir }}" - file_type: directory - recurse: false - register: backup_dirs + - name: Register new backup directories + find: + paths: "{{ backup_dir }}" + file_type: directory + recurse: false + register: backup_dirs - - name: Check logrotate directories - file: - path: "{{ item[0].path }}/{{ item[1] }}" - state: directory - with_nested: - - "{{ backup_dirs.files }}" - - ['daily', 'weekly', 'monthly', 'yearly'] - loop_control: - label: "{{ item[0].path }} {{ item[1] }}" + - name: Check logrotate directories + file: + path: "{{ item[0].path }}/{{ item[1] }}" + state: directory + with_nested: + - "{{ backup_dirs.files }}" + - ['daily', 'weekly', 'monthly', 'yearly'] + loop_control: + label: "{{ item[0].path }} {{ item[1] }}" - - name: Search for the created backups - find: - paths: "{{ item.path }}" - file_type: file - patterns: '*.gz' - recurse: false - register: backup_files - loop: "{{ backup_dirs.files }}" - loop_control: - label: "{{ item.path }}" + - name: Search for the created backups + find: + paths: "{{ item.path }}" + file_type: file + patterns: '*.gz' + recurse: false + register: backup_files + loop: "{{ backup_dirs.files }}" + loop_control: + label: "{{ item.path }}" - - name: Store the yearly backups - copy: - remote_src: true - src: "{{ item.path }}" - dest: "{{ item.path | dirname }}/yearly/{{ item.path | basename }}" - with_items: "{{ backup_files.results | map(attribute='files') | list }}" - when: (ansible_date_time.day == "01" and ansible_data_time.month == "01") - loop_control: - label: "{{ item.path }}" + - name: Store the yearly backups + copy: + remote_src: true + src: "{{ item.path }}" + dest: "{{ item.path | dirname }}/yearly/{{ item.path | basename }}" + with_items: "{{ backup_files.results | map(attribute='files') | list }}" + when: (ansible_date_time.day == "01" and ansible_data_time.month == "01") + loop_control: + label: "{{ item.path }}" - - name: Store the monthly backups - copy: - remote_src: true - src: "{{ item.path }}" - dest: "{{ item.path | dirname }}/monthly/{{ item.path | basename }}" - with_items: "{{ backup_files.results | map(attribute='files') | list }}" - when: (ansible_date_time.day == "01" and ansible_data_time.month != "01") - loop_control: - label: "{{ item.path }}" + - name: Store the monthly backups + copy: + remote_src: true + src: "{{ item.path }}" + dest: "{{ item.path | dirname }}/monthly/{{ item.path | basename }}" + with_items: "{{ backup_files.results | map(attribute='files') | list }}" + when: (ansible_date_time.day == "01" and ansible_data_time.month != "01") + loop_control: + label: "{{ item.path }}" - - name: Store the weekly backups - copy: - remote_src: true - src: "{{ item.path }}" - dest: "{{ item.path | dirname }}/weekly/{{ item.path | basename }}" - with_items: "{{ backup_files.results | map(attribute='files') | list }}" - when: (ansible_date_time.weekday_number == "1") - loop_control: - label: "{{ item.path }}" + - name: Store the weekly backups + copy: + remote_src: true + src: "{{ item.path }}" + dest: "{{ item.path | dirname }}/weekly/{{ item.path | basename }}" + with_items: "{{ backup_files.results | map(attribute='files') | list }}" + when: (ansible_date_time.weekday_number == "1") + loop_control: + label: "{{ item.path }}" - - name: Store the daily backup - copy: - remote_src: true - src: "{{ item.path }}" - dest: "{{ item.path | dirname }}/daily/{{ item.path | basename }}" - with_items: "{{ backup_files.results | map(attribute='files') | list }}" - when: (ansible_date_time.weekday_number != "1" and ansible_date_time.day != "01") - loop_control: - label: "{{ item.path }}" + - name: Store the daily backup + copy: + remote_src: true + src: "{{ item.path }}" + dest: "{{ item.path | dirname }}/daily/{{ item.path | basename }}" + with_items: "{{ backup_files.results | map(attribute='files') | list }}" + when: (ansible_date_time.weekday_number != "1" and ansible_date_time.day != "01") + loop_control: + label: "{{ item.path }}" - - name: Cleanup original backup files - file: - path: "{{ item.path }}" - state: absent - with_items: "{{ backup_files.results | map(attribute='files') | list }}" - loop_control: - label: "{{ item.path }}" + - name: Cleanup original backup files + file: + path: "{{ item.path }}" + state: absent + with_items: "{{ backup_files.results | map(attribute='files') | list }}" + loop_control: + label: "{{ item.path }}" + + - name: Inform Mattermost about success + uri: + url: https://cs-mm.ddnss.de/hooks/og4ckuqet7fafb8kjuaigzuh7c + method: POST + body_format: json + body: + text: Semaphore ran successful + + rescue: + - name: Inform Mattermost about error + uri: + url: https://cs-mm.ddnss.de/hooks/og4ckuqet7fafb8kjuaigzuh7c + method: POST + body_format: json + body: + text: Semaphore ran into error