Reworked and improved borg role
This commit is contained in:
parent
2451b5ced3
commit
5d9a225014
11 changed files with 123 additions and 57 deletions
|
@ -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
|
||||
|
||||
|
|
Reference in a new issue