1
0
Fork 0
mirror of https://github.com/roles-ansible/ansible_role_restic_archiver.git synced 2024-08-16 10:09:49 +02:00
ansible_role_restic_archiver/templates/restic_script_Linux.j2

79 lines
3.1 KiB
Text
Raw Normal View History

2020-05-01 10:56:07 +02:00
#!/usr/bin/env bash
# {{ ansible_managed }}
# Backup script for {{ item.src|default('stdin') }}
2019-09-11 11:31:51 +02:00
# Use this file to create a Backup and prune existing data with one execution.
export RESTIC_REPOSITORY={{ restic_repos[item.repo].location }}
export RESTIC_PASSWORD={{ restic_repos[item.repo].password }}
BACKUP_NAME={{ item.name }}
2019-12-17 14:19:25 +01:00
{% if restic_repos[item.repo].aws_access_key is defined %}
AWS_ACCESS_KEY_ID={{ restic_repos[item.repo].aws_access_key }}
{% endif %}
{% if restic_repos[item.repo].aws_secret_access_key is defined %}
AWS_SECRET_ACCESS_KEY={{ restic_repos[item.repo].aws_secret_access_key }}
{% endif %}
{% if item.src is defined %}
BACKUP_SOURCE={{ item.src }}
{% endif %}
2019-09-11 11:29:36 +02:00
set -euxo pipefail
{#
Define Tags
#}
{% macro tags(tags) -%}
2019-09-11 11:29:36 +02:00
{% if tags is defined and (tags|length>0) %}{% for tag in tags %} --tag {{ tag }}{% endfor %}{% endif %}
{%- endmacro %}
{#
Define Keeped Tags
#}
{% macro keep_tags(tags) -%}
{% if tags is defined and (tags|length>0) %}{% for tag in tags %} --keep-tag {{ tag }}{% endfor %}{% endif %}
{%- endmacro %}
{#
Define Hostname
#}
{% macro hostname(h) -%}
{% if h is defined %} --hostname {{ h }}{% endif %}
{%- endmacro %}
{#
Define stdin filename
#}
{% macro stdin_filename(n) -%}
{% if n is defined %} --stdin-filename {{ n }}{% endif %}
{%- endmacro %}
{#
Define path
#}
{% macro path(repo) -%}
2019-09-11 15:58:57 +02:00
{% if repo.src is defined and repo.src != None and (repo.src|length>0) %}{{ repo.src }}{% else %}{{ repo.stdin_filename }}{% endif %}
{%- endmacro %}
{#
Define retention pattern
#}
{% macro retention_pattern(repo) -%}
2019-09-11 11:29:36 +02:00
{% if repo.keep_last is defined and repo.keep_last != None %}--keep-last {{ item.keep_last }}{% endif %} \
{% if repo.keep_hourly is defined and repo.keep_hourly != None %}--keep-hourly {{ item.keep_hourly }}{% endif %} \
{% if repo.keep_daily is defined and repo.keep_daily != None %}--keep-daily {{ item.keep_daily }}{% endif %} \
{% if repo.keep_weekly is defined and repo.keep_weekly != None %}--keep-weekly {{ item.keep_weekly }}{% endif %} \
{% if repo.keep_monthly is defined and repo.keep_monthly != None %}--keep-monthly {{ item.keep_monthly }}{% endif %} \
{% if repo.keep_yearly is defined and repo.keep_yearly != None %}--keep-yearly {{ item.keep_yearly }}{% endif %} \
{% if repo.keep_within is defined and repo.keep_within != None %}--keep-within {{ item.keep_within }}{% endif %} \
{% if repo.keep_tag is defined and (repo.keep_tag|length>0) %}{{ keep_tags(repo.keep_tag) }}{% endif %}
{%- endmacro %}
{#
Define backup commands
#}
2019-08-14 16:16:16 +02:00
if [[ -z ${CRON+x} ]]; then
MODE_TAG="--tag manual"
else
MODE_TAG="--tag cron"
fi
{% if item.stdin is defined and item.stdin == true %}
2019-08-14 16:16:16 +02:00
{{ item.stdin_cmd }} | {{ restic_install_path }}/restic backup --stdin $MODE_TAG {{ tags(item.tags) }} {{ stdin_filename(item.stdin_filename) }} $@
{% else %}
2019-08-14 16:16:16 +02:00
{{ restic_install_path }}/restic backup $BACKUP_SOURCE $MODE_TAG {{ tags(item.tags) }} $@
{% endif %}
{#
Define stdin forget commands
#}
2019-09-11 16:06:18 +02:00
{{ restic_install_path }}/restic forget --path {{ path(item) }} {{ retention_pattern(item) }} {% if item.prune is defined and item.prune == true %}--prune{% endif %}