salt/states/systems/core/backup/init.sls

68 lines
2.1 KiB
Text

{%- if 'backup' in pillar['grains']['roles'] -%}
{%- else -%}
{##ensure that backup pillar exists##}
{%- if pillar['backup'] is defined -%}
{##restore directories from backup##}
{%- for name in pillar['backup'] %}
{%- if pillar['backup'][name]['location'] is defined %}
{%- if pillar['backup'][name]['key'] is defined %}
{{ name }}_key:
file.managed:
- name: /root/.ssh/{{ pillar['backup'][name]['key'] }}
- source: salt://secure/keys/backup/{{ pillar['backup'][name]['key'] }}
- user: root
- group: root
- mode: 600
- makedirs: true
#this should be made generic and/or added to all machines
backup_host.actcur.com:
ssh_known_hosts.present:
- name: host.actcur.com
- hash_known_hosts: False
- user: root
- enc: ecdsa-sha2-nistp256
- key: "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCnvAIi9HiYDsQCHPWPQrgdLTANveZ3K9v1+0iJDA2yEo67EfkFl7O9Go/pVkOoSjV+eWKQ9A7Az7aMY1tc9ur0="
#need to add host entry in .ssh/config.d
{{ name }}_config:
file.managed:
- name: /root/.ssh/config
- source: salt://systems/core/backup/ssh_config
- user: root
- group: root
- mode: 600
- makedirs: true
{{ name }}_configd:
file.managed:
- name: /root/.ssh/config.d/{{ name }}
- source: salt://systems/core/backup/ssh_configd
- user: root
- group: root
- mode: 600
- makedirs: true
- template: jinja
- context:
cname: {{ name }}
chost: {{ pillar['backup'][name]['host'] }}
ckey: /root/.ssh/{{ pillar['backup'][name]['key'] }}
cuser: {{ pillar['backup'][name]['rsync_user'] }}
{% endif %}
#handle backing up w/ rsync
rsync_{{ name }}:
pkg.installed:
- name: rsync
backup_dir_{{ name }}:
cmd.run:
- name: "ssh {{ name }} 'mkdir -p /mnt/butter/backups/configurations/{{ name }}/latest'"
backup_{{ name }}:
rsync.synchronized:
- name: {{ name }}:/mnt/butter/backups/configurations/{{ name }}/latest
- source: {{ pillar['backup'][name]['location'] }}/
- prepare: true
- delete: true
- force: true
{%- endif -%}
{%- endfor %}
{%- endif %}
{%- endif %}