Ajout des backups avec restic
parent
8c15a54cf2
commit
1f5129092e
1
all.yml
1
all.yml
|
@ -49,6 +49,7 @@
|
||||||
- import_playbook: plays/radvd.yml
|
- import_playbook: plays/radvd.yml
|
||||||
- import_playbook: plays/re2o-ldap.yml
|
- import_playbook: plays/re2o-ldap.yml
|
||||||
- import_playbook: plays/re2o.yml
|
- import_playbook: plays/re2o.yml
|
||||||
|
- import_playbook: plays/restic_client.yml
|
||||||
- import_playbook: plays/reverse-proxy.yml
|
- import_playbook: plays/reverse-proxy.yml
|
||||||
- import_playbook: plays/root.yml
|
- import_playbook: plays/root.yml
|
||||||
- import_playbook: plays/roundcube.yml
|
- import_playbook: plays/roundcube.yml
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
glob_restic:
|
||||||
|
to_exclude:
|
||||||
|
- /var/lib/lxcfs
|
||||||
|
to_backup:
|
||||||
|
- /etc
|
||||||
|
- /var
|
||||||
|
remote:
|
||||||
|
- rest:http://{{ ansible_hostname }}:{{ vault.restic[ansible_hostname].rest_password }}@172.16.10.14/{{ ansible_hostname }}/base
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env ansible-playbook
|
||||||
|
---
|
||||||
|
|
||||||
|
- hosts: server
|
||||||
|
vars:
|
||||||
|
restic: "{{ glob_restic | default({}) | combine(loc_borg | default({})) }}"
|
||||||
|
roles:
|
||||||
|
- restic-client
|
|
@ -30,6 +30,7 @@
|
||||||
- import_playbook: scripts.yml
|
- import_playbook: scripts.yml
|
||||||
- import_playbook: vm_setup.yml
|
- import_playbook: vm_setup.yml
|
||||||
- import_playbook: borgbackup_client.yml
|
- import_playbook: borgbackup_client.yml
|
||||||
|
- import_playbook: restic_client.yml
|
||||||
- import_playbook: network_interfaces.yml
|
- import_playbook: network_interfaces.yml
|
||||||
- import_playbook: nullmailer.yml
|
- import_playbook: nullmailer.yml
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
- name: Restart timer
|
||||||
|
service:
|
||||||
|
name: restic-base.timer
|
||||||
|
state: restarted
|
|
@ -0,0 +1,51 @@
|
||||||
|
---
|
||||||
|
- name: Install restic
|
||||||
|
apt:
|
||||||
|
update_cache: true
|
||||||
|
name:
|
||||||
|
- restic
|
||||||
|
state: present
|
||||||
|
register: apt_result
|
||||||
|
retries: 3
|
||||||
|
until: apt_result is succeeded
|
||||||
|
|
||||||
|
- name: Ensures /etc/restic exists
|
||||||
|
file:
|
||||||
|
path: /etc/restic
|
||||||
|
state: directory
|
||||||
|
mode: 0700
|
||||||
|
owner: root
|
||||||
|
|
||||||
|
- name: Deploy restic config
|
||||||
|
template:
|
||||||
|
src: "{{ item }}.j2"
|
||||||
|
dest: /etc/{{ item }}
|
||||||
|
mode: 0600
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
loop:
|
||||||
|
- restic/base.env
|
||||||
|
- restic/base-excludes
|
||||||
|
- restic/base-includes
|
||||||
|
- restic/base-password
|
||||||
|
- restic/base-repo
|
||||||
|
- systemd/system/restic-base.service
|
||||||
|
- systemd/system/restic-base.timer
|
||||||
|
notify: Restart timer
|
||||||
|
|
||||||
|
- name: Init restic repository
|
||||||
|
command:
|
||||||
|
cmd: "restic init --repository-file /etc/restic/base-repo --password-file /etc/restic/base-password"
|
||||||
|
register: restic_init
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Indicate role in motd
|
||||||
|
template:
|
||||||
|
src: update-motd.d/04-service.j2
|
||||||
|
dest: /etc/update-motd.d/04-restic
|
||||||
|
mode: 0755
|
||||||
|
|
||||||
|
- name: Enable timer
|
||||||
|
service:
|
||||||
|
name: restic-base.timer
|
||||||
|
enabled: true
|
|
@ -0,0 +1,3 @@
|
||||||
|
{% for dir in restic.to_exclude %}
|
||||||
|
{{ dir }}
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{% for dir in restic.to_backup %}
|
||||||
|
{{ dir }}
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1 @@
|
||||||
|
{{ vault.restic[ansible_hostname].repo_password }}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{% for repo in restic.remote %}
|
||||||
|
{{ repo }}
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1,9 @@
|
||||||
|
{{ ansible_header | comment }}
|
||||||
|
|
||||||
|
RESTIC_REPOSITORY_FILE="/etc/restic/base-repo"
|
||||||
|
RESTIC_PASSWORD_FILE="/etc/restic/base-password"
|
||||||
|
|
||||||
|
RESTIC_CACHE_DIR="/var/cache/restic"
|
||||||
|
RESTIC_COMPRESSION="max"
|
||||||
|
RESTIC_PROGRESS_FPS=1
|
||||||
|
RESTIC_PACK_SIZE="64M"
|
|
@ -0,0 +1,13 @@
|
||||||
|
{{ ansible_header | comment }}
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
EnvironmentFile=/etc/restic/base.env
|
||||||
|
ExecStart=restic backup --files-from=/etc/restic/base-includes --exclude-file=/etc/restic/base-excludes
|
||||||
|
ExecStart=restic forget --prune --keep-daily 2 --keep-weekly 2 --keep-monthly 2 --keep-yearly 1
|
||||||
|
|
||||||
|
Type=oneshot
|
||||||
|
User=root
|
|
@ -0,0 +1,10 @@
|
||||||
|
{{ ansible_header | comment }}
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnCalendar={{ 24 | random(seed=inventory_hostname) }}:{{ 60 | random(seed=inventory_hostname) }}
|
||||||
|
Persistent=true
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/tail +14
|
||||||
|
{{ ansible_header | comment }}
|
||||||
|
[0m> [38;5;82mRestic (Client)[0m a été déployé sur cette machine. Voir [38;5;6m/etc/restic/[0m.
|
Loading…
Reference in New Issue