Files @ 4f29bd1aa05b
Branch filter:

Location: majic-ansible-roles/roles/backup_client/tasks/main.yml - annotation

branko
MAR-181: Drop support for Debian 9 Stretch from the xmpp_server role:

- Switch to using IPs from VirtualBox default allowed host-only
network subnets.
- Drop Stretch-specific workarounds, code, and tests.
a45dcc06530a
a45dcc06530a
a718023f9e76
a718023f9e76
a718023f9e76
a718023f9e76
3dca599dbdc9
3dca599dbdc9
6e57b636d3a7
6b87dd13b24c
a45dcc06530a
3dca599dbdc9
a20ca43cd967
a20ca43cd967
a20ca43cd967
6e57b636d3a7
a45dcc06530a
a45dcc06530a
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
a45dcc06530a
a45dcc06530a
a45dcc06530a
a45dcc06530a
a45dcc06530a
a45dcc06530a
a45dcc06530a
a45dcc06530a
a45dcc06530a
d61d01c00362
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
a45dcc06530a
0848aea59392
0848aea59392
d61d01c00362
d61d01c00362
a45dcc06530a
d61d01c00362
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
a45dcc06530a
0848aea59392
0848aea59392
d61d01c00362
d61d01c00362
a45dcc06530a
c6f217756635
364c0adf308e
364c0adf308e
fcf5abdd3ad5
fcf5abdd3ad5
c6f217756635
6e57b636d3a7
fcf5abdd3ad5
c6f217756635
c6f217756635
364c0adf308e
364c0adf308e
fcf5abdd3ad5
fcf5abdd3ad5
1ac4be13293b
3dca599dbdc9
6e57b636d3a7
fcf5abdd3ad5
c6f217756635
a45dcc06530a
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
6e57b636d3a7
a45dcc06530a
a45dcc06530a
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
a45dcc06530a
3498d77cad32
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3498d77cad32
a45dcc06530a
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
a45dcc06530a
5e15f8ca16fc
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
5e15f8ca16fc
5e15f8ca16fc
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
5e15f8ca16fc
3686169e9565
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
1ac4be13293b
1ac4be13293b
3dca599dbdc9
3dca599dbdc9
3dca599dbdc9
7387caca37f3
f4962ad6a0ec
f4962ad6a0ec
f4962ad6a0ec
f4962ad6a0ec
6e57b636d3a7
f4962ad6a0ec
f4962ad6a0ec
f4962ad6a0ec
f4962ad6a0ec
7387caca37f3
7387caca37f3
fcf5abdd3ad5
7387caca37f3
bfafd526bfc3
---

# See duply_main_conf.j2 for details on why this is required (at least
# on Debian 10 Buster). With newer versions of Debian it might be
# possible to switch to Paramiko backend.
- name: Install pexpect for pexpect+sftp Duplicity backend
  apt:
    name: "python-pexpect"
    state: present

- name: Install backup software
  apt:
    name:
      - duplicity
      - duply
    state: present

- name: Set-up Duply directories
  file:
    path: "{{ item }}"
    state: directory
    owner: root
    group: root
    mode: 0700
  with_items:
    - "/etc/duply"
    - "/etc/duply/main"
    - "/etc/duply/main/patterns"
    - "/etc/duply/main/gnupg"
    - "/etc/duply/main/ssh"
    - "/var/cache/duply"
    - "/var/cache/duply/main"

- name: Deploy GnuPG private keys
  copy:
    content: "{{ backup_encryption_key }}"
    dest: "/etc/duply/main/private_keys.asc"
    owner: root
    group: root
    mode: 0600
  notify:
    - Remove current keyring
    - Create keyring directory
    - Import private keys
    - Import public keys

- name: Deploy GnuPG public keys
  copy:
    content: "{{ backup_additional_encryption_keys | join('\n') }}"
    dest: "/etc/duply/main/public_keys.asc"
    owner: root
    group: root
    mode: 0600
  notify:
    - Remove current keyring
    - Create keyring directory
    - Import private keys
    - Import public keys

- name: Extract encryption key identifier (Duplicty requires key ID in hexadecimal format)
  shell: "set -o pipefail && gpg --no-tty --list-packets /etc/duply/main/private_keys.asc | grep keyid: |
    head -n1 | sed -e 's/.*: //'"
  args:
    executable: /bin/bash
  register: backup_encryption_key_id
  changed_when: false
  failed_when: not backup_encryption_key_id.stdout

- name: Extract additional encryption keys identifiers (Duplicty requires key ID in hexadecimal format)
  shell: "set -o pipefail &&  gpg --no-tty --list-packets /etc/duply/main/public_keys.asc | grep keyid: |
    sed -e 's/.*: //' | sort -u | tr '\n' ',' | sed -e 's/,$//'"
  args:
    executable: /bin/bash
  when: backup_additional_encryption_keys | length > 0
  register: backup_additional_encryption_keys_ids
  changed_when: false
  failed_when: not backup_additional_encryption_keys_ids.stdout

- name: Deploy private SSH key for logging-in into backup server
  copy:
    content: "{{ backup_ssh_key }}"
    dest: "/etc/duply/main/ssh/identity"
    owner: root
    group: root
    mode: 0600
  no_log: true

- name: Deploy custom known_hosts for backup purposes
  template:
    src: "known_hosts.j2"
    dest: "/etc/duply/main/ssh/known_hosts"
    owner: root
    group: root
    mode: 0600

- name: Deploy Duply configuration file
  template:
    src: "duply_main_conf.j2"
    dest: "/etc/duply/main/conf"
    owner: root
    group: root
    mode: 0600

- name: Deploy base exclude pattern (exclude all by default)
  copy:
    content: "- **"
    dest: "/etc/duply/main/exclude"
    owner: root
    group: root
    mode: 0600

- name: Set-up directory for storing pre-backup scripts
  file:
    path: "/etc/duply/main/pre.d/"
    state: directory
    owner: root
    group: root
    mode: 0700

- name: Set-up script for running all pre-backup scripts
  copy:
    src: "duply_pre"
    dest: "/etc/duply/main/pre"
    owner: root
    group: root
    mode: 0700

- name: Deploy crontab entry for running backups
  cron:
    name: backup
    cron_file: backup
    hour: "2"
    minute: "0"
    job: "/usr/bin/duply main backup"
    state: present
    user: root

- name: Ensure the file with include patterns exists (but do not overwrite)
  copy:
    content: ""
    dest: /etc/duply/main/include
    force: false
    group: root
    owner: root
    mode: 0600

- name: Explicitly run all handlers
  include: ../handlers/main.yml
  when: "run_handlers | default(False) | bool()"
  tags:
    - handlers