Test and dependency fixes (#153)

This commit is contained in:
Manu 2024-10-18 11:35:39 +01:00 committed by GitHub
parent ad163fec68
commit c8a295aa26
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 55 additions and 30 deletions

View File

@ -1,6 +1,6 @@
# Ansible Role: BorgBackup Client # Ansible Role: BorgBackup Client
[![Test](https://github.com/borgbase/ansible-role-borgbackup/actions/workflows/main.yml/badge.svg)](https://github.com/borgbase/ansible-role-borgbackup/actions/workflows/main.yml) [![Ansible Galaxy](https://img.shields.io/ansible/role/48519)](https://galaxy.ansible.com/borgbase/ansible_role_borgbackup) [![Test](https://github.com/borgbase/ansible-role-borgbackup/actions/workflows/main.yml/badge.svg)](https://github.com/borgbase/ansible-role-borgbackup/actions/workflows/main.yml) [![Ansible Galaxy](https://img.shields.io/ansible/role/d/borgbase/ansible_role_borgbackup?logo=ansible&color=5cbec1&label=Ansible%20Galaxy)](https://galaxy.ansible.com/ui/standalone/roles/borgbase/ansible_role_borgbackup/)
Set up encrypted, compressed and deduplicated backups using [BorgBackup](https://borgbackup.readthedocs.io/en/stable/) and [Borgmatic](https://github.com/witten/borgmatic). Currently supports Debian/Ubuntu, CentOS/Red Hat/Fedora, Archlinux and Manjaro. Set up encrypted, compressed and deduplicated backups using [BorgBackup](https://borgbackup.readthedocs.io/en/stable/) and [Borgmatic](https://github.com/witten/borgmatic). Currently supports Debian/Ubuntu, CentOS/Red Hat/Fedora, Archlinux and Manjaro.
@ -19,12 +19,13 @@ Works great with [BorgBase.com](https://www.borgbase.com) - Simple and Secure Ho
Systemd timers, be sure to remove the Cron job in `/etc/cron.d/borgmatic` first. Systemd timers, be sure to remove the Cron job in `/etc/cron.d/borgmatic` first.
The role will also alert you when trying to use both timers. The role will also alert you when trying to use both timers.
## Example playbook with root as backup user and Cron timer ## Example playbook with root as backup user, using the distro package and Cron timer
``` ```
- hosts: all - hosts: all
roles: roles:
- role: borgbase.ansible_role_borgbackup - role: borgbase.ansible_role_borgbackup
borg_install_method: package
borg_encryption_passphrase: CHANGEME borg_encryption_passphrase: CHANGEME
borg_repository: borg_repository:
- ssh://xxxxxx@xxxxxx.repo.borgbase.com/./repo - ssh://xxxxxx@xxxxxx.repo.borgbase.com/./repo

View File

@ -46,4 +46,6 @@ borgmatic_version: ">=1.7.11"
borg_venv_path: "/opt/borgmatic" borg_venv_path: "/opt/borgmatic"
borg_user: "root" borg_user: "root"
borg_group: "root" borg_group: "root"
backup_user_info:
home: "/home/{{ borg_user }}"
... ...

View File

@ -50,7 +50,7 @@ argument_specs:
default: root default: root
description: Name of the Group to create Backups (Service Account) description: Name of the Group to create Backups (Service Account)
borg_source_directories: borg_source_directories:
type: List type: list
default: "/etc/hostname" default: "/etc/hostname"
required: false required: false
description: List of local folders to back up. description: List of local folders to back up.
@ -59,7 +59,7 @@ argument_specs:
required: false required: false
description: Don't cross file-system boundaries. description: Don't cross file-system boundaries.
borg_repository: borg_repository:
type: List type: str
required: true required: true
description: | description: |
Full path to repository. Full path to repository.
@ -75,11 +75,11 @@ argument_specs:
required: false required: false
description: Store ctime into archive. description: Store ctime into archive.
borg_exclude_patterns: borg_exclude_patterns:
type: List type: list
required: false required: false
description: Any paths matching these patterns are excluded from backups. Globs and tildes are expanded. description: Any paths matching these patterns are excluded from backups. Globs and tildes are expanded.
borg_exclude_from: borg_exclude_from:
type: List type: list
required: false required: false
description: Read exclude patterns from one or more separate named files, one pattern per line. description: Read exclude patterns from one or more separate named files, one pattern per line.
borg_remote_path: borg_remote_path:
@ -144,7 +144,7 @@ argument_specs:
required: false required: false
description: Number of yearly archives to keep. description: Number of yearly archives to keep.
borgmatic_checks: borgmatic_checks:
type: List type: list
required: false required: false
description: | description: |
List of one or more consistency checks to run List of one or more consistency checks to run

View File

@ -15,9 +15,7 @@ galaxy_info:
- all - all
- name: Ubuntu - name: Ubuntu
versions: versions:
- trusty - all
- xenial
- bionic
- name: ArchLinux - name: ArchLinux
versions: versions:
- all - all

View File

@ -19,6 +19,17 @@
name: "{{ openssh_package }}" name: "{{ openssh_package }}"
state: present state: present
- name: Enable EPEL for yamllint
package:
name: epel-release
state: present
when: ansible_os_family == 'RedHat' and ansible_distribution != 'Fedora'
- name: Install yamllint
package:
name: yamllint
state: present
roles: roles:
- role: borgbase.ansible_role_borgbackup - role: borgbase.ansible_role_borgbackup
borg_install_method: pip borg_install_method: pip
@ -42,11 +53,3 @@
- name: users - name: users
hostname: database1.example.org hostname: database1.example.org
port: 5433 port: 5433
post_tasks:
- name: Install yamllint for checking config file
pip:
name: yamllint
executable: pip3
extra_args: "{{ pip3_extra_args }}"

View File

@ -10,8 +10,8 @@ platforms:
image: almalinux:9 image: almalinux:9
- name: fedora-latest - name: fedora-latest
image: fedora:latest image: fedora:latest
- name: debian-bullseye - name: debian-bookworm
image: debian:bullseye image: debian:bookworm
- name: ubuntu-latest - name: ubuntu-latest
image: ubuntu:latest image: ubuntu:latest
provisioner: provisioner:

View File

@ -1,6 +1,12 @@
--- ---
- name: Install Borg and Borgmatic via pip - name: Install Borg and Borgmatic via pip
block: block:
- name: Ensure the crb repository is enabled for RedHat (needed for xxhash)
community.general.dnf_config_manager:
name: crb
state: enabled
when: ansible_os_family == 'RedHat' and ansible_distribution != 'Fedora'
- name: Install build dependencies - name: Install build dependencies
ansible.builtin.package: ansible.builtin.package:
name: "{{ borg_pip_packages }}" name: "{{ borg_pip_packages }}"

View File

@ -5,10 +5,16 @@ borg_dep_packages:
borg_cron_package: cronie borg_cron_package: cronie
borg_pip_packages: borg_pip_packages:
- acl
- gcc - gcc
- lz4
- openssl
- pkgconfig - pkgconfig
- python-pip - python-pip
- python-setuptools - python-setuptools
- xxhash
- xz
- zstd
borg_distro_packages: borg_distro_packages:
- borg - borg

View File

@ -5,16 +5,21 @@ borg_dep_packages:
borg_cron_package: cronie borg_cron_package: cronie
borg_pip_packages: borg_pip_packages:
- libacl-devel
- libacl
- gcc - gcc
- gcc-c++ - gcc-c++
- libacl
- libacl-devel
- libzstd-devel
- lz4-devel
- openssl-devel - openssl-devel
- python3-pip - openssl-devel
- python3-wheel - python3-cython
- python3-devel - python3-devel
- python3-pip
- python3-setuptools - python3-setuptools
- python3-Cython - python3-wheel
- xxhash
- xxhash-devel
borg_distro_packages: borg_distro_packages:
- borgbackup - borgbackup

View File

@ -5,16 +5,20 @@ borg_dep_packages:
borg_cron_package: cronie borg_cron_package: cronie
borg_pip_packages: borg_pip_packages:
- libacl-devel
- libacl
- gcc - gcc
- gcc-c++ - gcc-c++
- libacl
- libacl-devel
- libzstd-devel
- lz4-devel
- openssl-devel - openssl-devel
- python3-pip
# - python3-wheel
- python3-devel - python3-devel
- python3-pip
- python3-setuptools - python3-setuptools
- xxhash
- xxhash-devel
# - python3-virtualenv # - python3-virtualenv
# - python3-wheel
borg_distro_packages: borg_distro_packages:
- borgbackup - borgbackup