From 622dcacc075eb9fdd0d07cb8aed2c8acf44832c0 Mon Sep 17 00:00:00 2001 From: Salt Date: Tue, 30 Jun 2020 06:22:27 -0500 Subject: [PATCH] Move to backup timers instead of cronjobs, lay groundwork for backing up personal systems --- inventory/group_vars/gameservers.yml | 2 +- inventory/group_vars/home.yml | 4 +++- roles/backups/defaults/main.yml | 3 ++- roles/backups/handlers/main.yml | 10 +++++++++ roles/backups/tasks/main.yml | 22 ++++++++++++++++---- roles/backups/templates/9iron-backup.service | 10 +++++++++ roles/backups/templates/9iron-backup.timer | 11 ++++++++++ 7 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 roles/backups/handlers/main.yml create mode 100644 roles/backups/templates/9iron-backup.service create mode 100644 roles/backups/templates/9iron-backup.timer diff --git a/inventory/group_vars/gameservers.yml b/inventory/group_vars/gameservers.yml index 4a2a763..255d82c 100644 --- a/inventory/group_vars/gameservers.yml +++ b/inventory/group_vars/gameservers.yml @@ -1,5 +1,5 @@ #!/usr/bin/ansible-playbook # vim:ft=ansible: -backups_hour: "*/6" +backups_frequency: 6h mcheapmax: 4096 mcheapmin: 1024 diff --git a/inventory/group_vars/home.yml b/inventory/group_vars/home.yml index e4e05f5..3c58325 100644 --- a/inventory/group_vars/home.yml +++ b/inventory/group_vars/home.yml @@ -1,3 +1,5 @@ #!/usr/bin/ansible-playbook # vim:ft=ansible: -ansible_pull_frequency: "8h" +ansible_pull_frequency: 8h +backups_frequency: 7d +aws_backup_bucket: "9iron-backups-home" diff --git a/roles/backups/defaults/main.yml b/roles/backups/defaults/main.yml index 5a6e29f..3e11fb5 100644 --- a/roles/backups/defaults/main.yml +++ b/roles/backups/defaults/main.yml @@ -1,4 +1,5 @@ #!/usr/bin/ansible-playbook # vim:ft=ansible: backups_outdir: "/opt/backups/out" -backups_hour: "2" +backups_boot_delay: 1h +backups_frequency: 24h diff --git a/roles/backups/handlers/main.yml b/roles/backups/handlers/main.yml new file mode 100644 index 0000000..1ca1c40 --- /dev/null +++ b/roles/backups/handlers/main.yml @@ -0,0 +1,10 @@ +#!/usr/bin/ansible-playbook +# vim:ft=ansible: +--- +- name: restart backups timer + systemd: + daemon_reload: yes + name: 9iron-backup.timer + enabled: yes + state: restarted + become: yes diff --git a/roles/backups/tasks/main.yml b/roles/backups/tasks/main.yml index 0afbfbc..f571233 100644 --- a/roles/backups/tasks/main.yml +++ b/roles/backups/tasks/main.yml @@ -22,10 +22,24 @@ src: "backup.sh" dest: "/opt/backups/backup.sh" mode: "0700" - - name: Set backup cronjob + - name: Template out services + template: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + mode: "{{ item.mode }}" + loop: + - { src: "9iron-backup.service", dest: "/etc/systemd/system/9iron-backup.service", mode: "0644" } + - { src: "9iron-backup.timer", dest: "/etc/systemd/system/9iron-backup.timer", mode: "0644" } + notify: restart backups timer + - name: Enable timer + systemd: + daemon_reload: yes + name: 9iron-backup.timer + enabled: yes + state: started + notify: restart backups timer + - name: Remove legacy cronjob cron: - minute: "0" - hour: "{{ backups_hour }}" + state: absent name: ansible-backup - job: "/opt/backups/backup.sh >> /backups/backups.log 2>&1" become: yes diff --git a/roles/backups/templates/9iron-backup.service b/roles/backups/templates/9iron-backup.service new file mode 100644 index 0000000..490c69a --- /dev/null +++ b/roles/backups/templates/9iron-backup.service @@ -0,0 +1,10 @@ +# vim:ft=dosini: +[Unit] +Description=9iron backup service + +[Service] +Type=oneshot +ExecStart=/opt/backpus/backup.sh + +[Install] +WantedBy=multi-user.target diff --git a/roles/backups/templates/9iron-backup.timer b/roles/backups/templates/9iron-backup.timer new file mode 100644 index 0000000..1f4ac3c --- /dev/null +++ b/roles/backups/templates/9iron-backup.timer @@ -0,0 +1,11 @@ +# vim:ft=dosini: +[Unit] +Description=9iron backup timer + +[Timer] +Persistent=true +OnBootSec={{ backups_boot_delay }} +OnUnitActiveSec={{ backups_frequency }} + +[Install] +WantedBy=timers.target