Compare commits

...

2 Commits

5 changed files with 47 additions and 14 deletions

View File

@ -36,7 +36,7 @@ Liste des éléments exclus de la sauvegarde.
### borgmatic_repositories
Liste des dépôts Borg sur lesquels envoyer la sauvegarde.
Dictionnaire contenant le `label` et le `path` des dépôts vers lesquels envoyer la sauvegarde.
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*

View File

@ -12,14 +12,22 @@ borgmatic_checks:
frequency: 4 weeks
- name: extract
frequency: 2 weeks
borgmatic_healthchecks: ""
borgmatic_exclude_patterns: []
borgmatic_repositories: []
# Exemple:
# - label: default
# path: ssh://user@backupserver/./sourcehostname.borg
borgmatic_source_directories: []
borgmatic_retention:
daily: 7
monthly: 0
weekly: 4
borgmatic_name: "{{ inventory_hostname }}_{now}"
borgmatic_compression: none
borgmatic_passphrase: ""

View File

@ -3,8 +3,16 @@
- name: Créer le dépôt
ansible.builtin.command:
cmd: borgmatic init --encryption repokey-blake2
cmd: borg init -e repokey-blake2 {{ item.path }}
become: true
loop: "{{ borgmatic_repositories }}"
register: borg_init
failed_when:
- "'A repository already exists' not in borg_init.stderr"
- borg_init.rc != 0
changed_when:
- "'A repository already exists' not in borg_init.stderr"
- borg_init.rc == 0
- name: Activer la planification
ansible.builtin.systemd:

View File

@ -26,7 +26,7 @@
marker: "# {mark} ANSIBLE MANAGED BLOCK for role_borgmatic"
block: |
{% for repository in borgmatic_repositories %}
Host {{ repository | ansible.builtin.urlsplit('hostname') }}
Host {{ repository.path | ansible.builtin.urlsplit('hostname') }}
IdentityFile /etc/borgmatic/id_ed25519
IdentitiesOnly yes
{% endfor %}

View File

@ -1,24 +1,41 @@
---
repositories:
{% for repository in borgmatic_repositories %}
- label: {{ repository.label }}
path: {{ repository.path }}
{% endfor %}
exclude_patterns:
{% for pattern in borgmatic_exclude_patterns %}
- {{ pattern }}
{% endfor %}
source_directories:
{% for directory in borgmatic_source_directories %}
- {{ directory }}
{% endfor %}
archive_name_format: {{ borgmatic_name }}
compression: {{ borgmatic_compression }}
encryption_passphrase: {{ borgmatic_passphrase }}
consistency:
checks: {{ borgmatic_checks }}
checks:
{% for check in borgmatic_checks %}
- name: {{ check.name }}
frequency: {{ check.frequency }}
{% endfor %}
hooks:
healthchecks:
ping_url: {{ borgmatic_healthchecks }}
send_logs: false
location:
exclude_patterns: {{ borgmatic_exclude_patterns }}
repositories: {{ borgmatic_repositories }}
source_directories: {{ borgmatic_source_directories }}
states:
- finish
- fail
retention:
keep_daily: {{ borgmatic_retention.daily }}
keep_monthly: {{ borgmatic_retention.monthly }}
keep_weekly: {{ borgmatic_retention.weekly }}
storage:
archive_name_format: {{ borgmatic_name }}
compression: {{ borgmatic_compression }}
encryption_passphrase: {{ borgmatic_passphrase }}