Files
salt-states/restic/init.sls
2023-12-29 23:25:04 -05:00

83 lines
2.0 KiB
Plaintext

{% for name, minion_id in salt.pillar.get("restic:server:clients", {}).items() %}
restic-{{ name }}:
user.present:
- home: {{ salt.pillar.get("restic:server:mount") }}/{{ name }}
- createhome: true
- system: true
{{ salt.pillar.get("restic:server:mount") }}/{{ name }}/.ssh:
file.directory:
- user: restic-{{ name }}
- group: restic-{{ name }}
- mode: 700
{{ salt.pillar.get("restic:server:mount") }}/{{ name }}/.ssh/authorized_keys:
file.managed:
- user: restic-{{ name }}
- group: restic-{{ name }}
- mode: 400
- contents: {{ salt.mine.get(minion_id, 'root_id_rsa_pub').get(minion_id, "") | yaml_encode }}
{% endfor %}
bzip2:
pkg.installed: []
{% if salt.pillar.get("restic:client", None) is not none %}
{% if salt.pillar.get("restic:client:install", True)%}
'download restic':
cmd.script:
- shell: /bin/bash
- source: 'salt://restic/files/install.sh'
- template: jinja
- unless: "/bin/restic version | grep 'restic {{ salt.pillar.get("restic:version") }} '"
- require:
- pkg: bzip2
{% endif %}
/etc/logrotate.d/restic-backup:
file.managed:
- user: root
- group: root
- mode: 644
- contents: |
/var/log/restic/backup.log {
monthly
rotate 3
compress
missingok
notifempty
create 600 root root
}
restic dirs:
file.directory:
- user: root
- group: root
- mode: 700
- names:
- /opt/restic: []
- /var/log/restic: []
restic scripts:
file.managed:
- template: jinja
- user: root
- group: root
- mode: 700
- names:
- /opt/restic/env.sh:
- source: 'salt://restic/files/env.sh'
- /opt/restic/backup.sh:
- source: 'salt://restic/files/backup.sh'
- require:
- file: /opt/restic
restic cron:
cron.present:
- name: "/opt/restic/backup.sh >/dev/null 2>&1"
- identifier: restic backup
- minute: random
- hour: 4
- dayweek: 0
{% endif %}