diff options
Diffstat (limited to 'action_plugins/borg_init.py')
-rw-r--r-- | action_plugins/borg_init.py | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/action_plugins/borg_init.py b/action_plugins/borg_init.py index 1775271..9dde218 100644 --- a/action_plugins/borg_init.py +++ b/action_plugins/borg_init.py @@ -9,17 +9,46 @@ class ActionModule(ActionBase): result['changed'] = False result['failed'] = False - is_server = False + error_msgs = [] + ### OS support ####################################################### + os_package_names = { + 'Alpine': 'borgbackup', + 'Debian': 'borgbackup', + 'Gentoo': 'app-backup/borgbackup', + 'OpenBSD': 'borgbackup', + 'RedHat': 'borgbackup', + } + if task_vars['ansible_os_family'] not in os_package_names: + error_msgs.append(f"borg role does not support {task_vars['ansible_os_family']} os family clients yet") + + ### Borg server variables ############################################ + server = { + 'clients': [], # a list of hostnames + } for hostname, hostvars in task_vars['hostvars'].items() : if 'borg_server' in hostvars.keys() and hostvars['borg_server'] == task_vars['ansible_host']: - is_server = True + server['clients'].append(hostname) + + ### Borg client variables ############################################ + client = { + 'server': '', # a server hostname + } + if 'borg_server' in task_vars: + client['server'] = task_vars['borg_server'] + + ### Results compilation ############################################## + if error_msgs != []: + result['msg'] = ' ; '.join(error_msgs) + result['failed'] = True + return result result['ansible_facts'] = { 'borg': { - 'is_server': is_server, + 'client': client, + 'package_name': os_package_names[task_vars['ansible_os_family']], + 'server': server, } } return result - |