83 lines
2.2 KiB
YAML
83 lines
2.2 KiB
YAML
---
|
|
- name: Check for backup log presence
|
|
ansible.builtin.stat:
|
|
path: "/var/log/rear/rear-{{ ansible_hostname }}.log"
|
|
register: rear_backup_log_presence
|
|
|
|
- name: End host if ReaR backup already exists
|
|
when:
|
|
- rear_backup_log_presence['stat']['exists'] | bool
|
|
- not rear_force_backup | default(false) | bool
|
|
block:
|
|
- name: Validate ReaR backup completion
|
|
ansible.builtin.command:
|
|
cmd: "grep 'Finished running mkbackup workflow' /var/log/rear/rear-{{ ansible_hostname }}.log"
|
|
register: validate_backup_log
|
|
failed_when: validate_backup_log['rc'] not in [0,1]
|
|
|
|
- name: End play if ReaR already exists
|
|
ansible.builtin.meta: end_host
|
|
when:
|
|
- validate_backup_log['rc'] == 0
|
|
|
|
- name: Ensure nfs-utils and rear packages are present
|
|
ansible.builtin.package:
|
|
name:
|
|
- nfs-utils
|
|
- rear
|
|
state: present
|
|
|
|
- name: Check connectivity to NFS servers
|
|
ansible.builtin.wait_for:
|
|
host: "{{ item }}"
|
|
port: 2049
|
|
timeout: 30
|
|
loop: "{{ nfs_np }}"
|
|
ignore_errors: true
|
|
register: active_nfs_servers
|
|
|
|
- name: Define single NFS server
|
|
ansible.builtin.set_fact:
|
|
nfs_srv: "{{ active_nfs_servers | json_query(_nfs_query) | random }}"
|
|
vars:
|
|
_nfs_query: "results[?failed==`false`].item"
|
|
|
|
- name: Create /etc/rear if it doesn't exist
|
|
ansible.builtin.file:
|
|
path: /etc/rear
|
|
state: directory
|
|
mode: "0755"
|
|
owner: root
|
|
group: root
|
|
|
|
- name: Configure ReaR local.conf file
|
|
ansible.builtin.template:
|
|
src: local.conf.j2
|
|
dest: /etc/rear/local.conf
|
|
owner: root
|
|
group: root
|
|
mode: "0600"
|
|
|
|
- name: ReaR Backup
|
|
block:
|
|
- name: Execute ReaR backup
|
|
ansible.builtin.command: rear -d -v mkbackup
|
|
changed_when: true
|
|
register: rear_mkbackup
|
|
|
|
- name: Update ReaR Grub menu item
|
|
ansible.builtin.lineinfile:
|
|
path: "{{ rear_grub_conf }}"
|
|
line: "menuentry '{{ rear_grub_label }}' --class os {"
|
|
state: present
|
|
notify: Update Grub
|
|
|
|
- name: ReaR backup success
|
|
ansible.builtin.debug:
|
|
msg: "ReaR backup has completed successfully."
|
|
rescue:
|
|
- name: ReaR backup failed
|
|
ansible.builtin.fail:
|
|
msg: "ReaR backup has failed. Please review the logs for any errors, and try again."
|
|
|