- name: Backup hosts: beepi become: true vars: gpg_password: !vault | $ANSIBLE_VAULT;1.1;AES256 34383033383462626132353163303532376137613539326662383038663537633465373863396539 6139623961303165353230303637303530343136363165380a323534663665323836636165323237 39653863313962353033336338376462303962323762663139663136663033306161316361303630 6466663761643438360a653166616130633862643236633663303731356337326361636436646439 37303633353961623766313063363734376334383163376337376639306135373064 tasks: - name: Install rsync ansible.builtin.apt: name: - rsync - sqlite3 state: present - name: Create backup directory ansible.builtin.file: path: /opt/backup state: directory mode: '0700' - name: Copy daily ansible.builtin.copy: src: backupDaily.sh dest: /opt/backup/backupDaily.sh mode: '0700' - name: Copy weekly ansible.builtin.copy: src: backupWeekly.sh dest: /opt/backup/backupWeekly.sh mode: '0700' - name: Copy restore test ansible.builtin.copy: src: restoreTest.sh dest: /opt/backup/restoreTest.sh mode: '0700' - name: Copy metrics library ansible.builtin.template: src: metrics.sh.j2 dest: /opt/backup/metrics.sh mode: '0700' - name: Copy inventory collector ansible.builtin.template: src: backupInventory.sh.j2 dest: /opt/backup/backupInventory.sh mode: '0700' - name: Copy passphrase ansible.builtin.template: src: passphrase.txt.j2 dest: /opt/backup/passphrase.txt mode: '0600' - name: Create textfile directory ansible.builtin.file: path: "{{ node_exporter_textfile_dir }}" state: directory mode: '0755' - name: Install inventory timer ansible.builtin.copy: dest: "/etc/systemd/system/beepi-backup-inventory.{{ item.kind }}" content: "{{ item.content }}" mode: '0644' loop: - kind: service content: | [Unit] Description=Collect backup inventory metrics [Service] Type=oneshot ExecStart=/opt/backup/backupInventory.sh - kind: timer content: | [Unit] Description=Collect backup inventory metrics [Timer] OnBootSec=2min OnUnitActiveSec=15min AccuracySec=1min [Install] WantedBy=timers.target notify: Reload systemd - name: Flush handlers ansible.builtin.meta: flush_handlers - name: Enable inventory timer ansible.builtin.systemd_service: name: beepi-backup-inventory.timer state: started enabled: true - name: Run inventory collector once changed_when: true ansible.builtin.command: cmd: /opt/backup/backupInventory.sh - name: Set path ansible.builtin.cron: name: PATH env: true job: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin - name: Schedule daily backup ansible.builtin.cron: name: beepi backup daily user: root minute: '0' hour: '3' job: /opt/backup/backupDaily.sh >> /var/log/beepi-backup.log 2>&1 - name: Schedule weekly backup ansible.builtin.cron: name: beepi backup weekly user: root minute: '0' hour: '5' weekday: '0' job: /opt/backup/backupWeekly.sh >> /var/log/beepi-backup.log 2>&1 - name: Schedule weekly restore test ansible.builtin.cron: name: beepi restore test user: root minute: '0' hour: '6' weekday: '0' job: /opt/backup/restoreTest.sh >> /var/log/beepi-backup.log 2>&1 handlers: - name: Reload systemd ansible.builtin.systemd_service: daemon_reload: true