{%- if 'backup' in pillar['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/backups/{{ 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: ssh-ed25519 - key: "AAAAC3NzaC1lZDI1NTE5AAAAIDmNZT8bMAfwQGwG/ZE/vkzSBsS4Cv+F7REkIw1tP27J" #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 {##only run if backups are enabled##} {%- if grains['backups_enabled'] is defined -%} {%- if grains['backups_enabled'] == true %} 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'] }}/ - delete: true - force: true {%- endif -%} {%- endif -%} {%- endif -%} {%- endfor %} {%- endif %} {%- endif %}