borgbase / ansible-role-borgbackup

Ansible role to set up Borg and Borgmatic
MIT License
221 stars 98 forks source link

package installation on debian bullseye requires backport for funtional borgmatic #131

Open dirks opened 1 year ago

dirks commented 1 year ago

If borg_install_method: package on debian bullseye, borgmatic 1.5.12-2 is installed. Running validate-borgmatic-config with the otherwise unchanged settings from molecule/default scenario errors with:

Traceback (most recent call last):
  File "/usr/bin/validate-borgmatic-config", line 33, in <module>
    sys.exit(load_entry_point('borgmatic==1.5.13.dev0', 'console_scripts', 'validate-borgmatic-config')())
  File "/usr/lib/python3/dist-packages/borgmatic/commands/validate_config.py", line 45, in main
    validate.parse_configuration(config_filename, validate.schema_filename())
  File "/usr/lib/python3/dist-packages/borgmatic/config/validate.py", line 110, in parse_configuration
    parsed_result = validator.validate(raise_exception=False)
  File "/usr/lib/python3/dist-packages/pykwalify/core.py", line 183, in validate
    self._start_validate(self.source)
  File "/usr/lib/python3/dist-packages/pykwalify/core.py", line 230, in _start_validate
    self._validate(value, root_rule, path, done)
  File "/usr/lib/python3/dist-packages/pykwalify/core.py", line 264, in _validate
    self._validate_mapping(value, rule, path, done=None)
  File "/usr/lib/python3/dist-packages/pykwalify/core.py", line 604, in _validate_mapping
    self._validate(v, r, u"{0}/{1}".format(path, k), done)
  File "/usr/lib/python3/dist-packages/pykwalify/core.py", line 264, in _validate
    self._validate_mapping(value, rule, path, done=None)
  File "/usr/lib/python3/dist-packages/pykwalify/core.py", line 604, in _validate_mapping
    self._validate(v, r, u"{0}/{1}".format(path, k), done)
  File "/usr/lib/python3/dist-packages/pykwalify/core.py", line 262, in _validate
    self._validate_sequence(value, rule, path, done=None)
  File "/usr/lib/python3/dist-packages/pykwalify/core.py", line 439, in _validate_sequence
    if val in table:
TypeError: unhashable type: 'dict'

I guess this is due to one of the breaking changes of borgmatic from 1.5.x to 1.7.x (maybe 1.6.0 #381?).

A possible workaround would be to add borg_require_backports: "{{ ansible_distribution == 'Debian' and ansible_distribution_major_version == '11' }}" to defaults.yml and expand the package installation tasks.