Skip to content
Snippets Groups Projects
main.yml 2.41 KiB
Newer Older
  • Learn to ignore specific revisions
  • - name: Install borg and tools
    
      pacman: name=borg state=present
    
    - name: Check if borg repository already exists
    
      command: "{{ item['borg_cmd'] }} list {{ item['host'] }}/{{ item['dir'] }}"
    
      environment:
        BORG_RELOCATED_REPO_ACCESS_IS_OK: "yes"
    
      register: borg_list
    
      ignore_errors: true
    
      loop: "{{ backup_hosts }}"
    
      changed_when: borg_list.stdout | length > 0
    
    - name: Init borg repository  # noqa ignore-errors no-changed-when
    
      command: "{{ item['borg_cmd'] }} init -e keyfile {{ item['host'] }}/{{ item['dir'] }}"
    
      when: borg_list is failed
    
      environment:
        BORG_PASSPHRASE: ""
    
      ignore_errors: true  # This can sometimes fail if a backup is in progress :/
    
      loop: "{{ backup_hosts }}"
    
    - name: Install convenience scripts
    
      template: src=borg.j2 dest=/usr/local/bin/borg{{ item['suffix'] }} owner=root group=root mode=0755
      loop: "{{ backup_hosts }}"
    
    
    - name: Install borg backup scripts
    
      template: src=borg-backup.sh.j2 dest=/usr/local/bin/borg-backup{{ item['suffix'] }}.sh owner=root group=root mode=0755
      loop: "{{ backup_hosts }}"
    
    - name: Set up backup helpers for PostgreSQL databases
      when: "'postgresql_servers' in group_names"
      block:
        - name: Install postgres backup script
          template: src=backup-postgres.sh.j2 dest=/usr/local/bin/backup-postgres.sh owner=root group=root mode=0755
    
        - name: Make postgres backup directory
          file: path={{ backup_postgres_dir }} owner=root group=root mode=0755 state=directory
    
    - name: Set up backup helpers for MariaDB databases
      when: "'mysql_servers' in group_names"
      block:
        - name: Install mysql backup script
          template: src=backup-mysql.sh.j2 dest=/usr/local/bin/backup-mysql.sh owner=root group=root mode=0755
    
        - name: Install mysql backup config
          template: src=backup-my.cnf.j2 dest={{ backup_mysql_defaults }} owner=root group=root mode=0644
    
        - name: Create mysql backup directory
          file: path={{ backup_mysql_dir }} state=directory owner=root group=root mode=0755
    
    - name: Install systemd services for backup
    
      template: src={{ item }}.j2 dest=/etc/systemd/system/{{ item }} owner=root group=root mode=0644
    
      with_items:
        - borg-backup.service
    
        - borg-backup-offsite.service
    
    - name: Install systemd timer for backup
    
      copy: src=borg-backup.timer dest=/etc/systemd/system/borg-backup.timer owner=root group=root mode=0644
    
    
    - name: Activate systemd timer for backup
    
      systemd: name=borg-backup.timer enabled=yes state=started daemon-reload=yes