Merged client playbook and server playbook

This commit is contained in:
2023-04-18 14:52:43 +02:00
parent 2c76f99dd1
commit ec0dbee7bb
341 changed files with 153 additions and 811 deletions

View File

@@ -0,0 +1,14 @@
# role native-backups-cleanup
Cleans up old backups
## Additional software
It may be neccessary to install gcc seperat to use psutil
```bash
sudo pacman -S gcc
```
## further information
- https://stackoverflow.com/questions/48929553/get-hard-disk-size-in-python

View File

@@ -0,0 +1,30 @@
import psutil
import shutil
import os
import argparse
# Validating arguments
parser = argparse.ArgumentParser()
parser.add_argument('--maximum-backup-size-percent', type=int, dest='maximum_backup_size_percent',required=True, choices=range(0,100), help="The directory from which the data should be encrypted.")
parser.add_argument('--backups-folder-path',type=str,dest='backups_folder_path',required=True, help="The folder in which the backups are stored")
args = parser.parse_args()
deleted = True
while psutil.disk_usage(args.backups_folder_path).percent > args.maximum_backup_size_percent and deleted:
deleted = False
print("%d %% of disk %s are used. Freeing space..." % (psutil.disk_usage(args.backups_folder_path).percent,args.backups_folder_path))
for primary_directory in os.listdir(args.backups_folder_path):
primary_directory = os.path.join(args.backups_folder_path, primary_directory)
for application_directory in os.listdir(primary_directory):
application_directory = os.path.join(primary_directory, application_directory)
versions_directory = os.path.join(application_directory, "versions/")
versions = os.listdir(versions_directory)
versions.sort(reverse=False)
if len(versions) >= 1:
delete_diff = versions_directory + versions[0]
print("Deleting %s..." % (delete_diff))
shutil.rmtree(delete_diff)
deleted = True
if not deleted:
print("All versions had been deleted!")
print("Cleaning up finished: %d %% of disk %s are used." % (psutil.disk_usage(args.backups_folder_path).percent,args.backups_folder_path))

View File

@@ -0,0 +1,12 @@
- name: "reload backups-cleanup.service"
systemd:
name: backups-cleanup.service
state: reloaded
enabled: yes
daemon_reload: yes
- name: "restart backups-cleanup.timer"
systemd:
name: backups-cleanup.timer
state: restarted
enabled: yes
daemon_reload: yes

View File

@@ -0,0 +1,3 @@
dependencies:
- native-python-pip
- native-systemd-email

View File

@@ -0,0 +1,26 @@
- name: install psutil
pip:
name: psutil
- name: "create {{docker_backups_cleanup}}"
file:
path: "{{docker_backups_cleanup}}"
state: directory
mode: 0755
- name: create backups-cleanup.py
copy:
src: "backups-cleanup.py"
dest: "{{docker_backups_cleanup}}backups-cleanup.py"
- name: create backups-cleanup.service
template:
src: "backups-cleanup.service.j2"
dest: "/etc/systemd/system/backups-cleanup.service"
notify: reload backups-cleanup.service
- name: create backups-cleanup.timer
template:
src: "backups-cleanup.timer.j2"
dest: "/etc/systemd/system/backups-cleanup.timer"
notify: restart backups-cleanup.timer

View File

@@ -0,0 +1,7 @@
[Unit]
Description=delete old backups
OnFailure=systemd-email@%n.service
[Service]
Type=oneshot
ExecStart=/usr/bin/python {{docker_backups_cleanup}}/backups-cleanup.py --backups-folder-path {{backups_folder_path}} --maximum-backup-size-percent {{size_percent_maximum_backup}}

View File

@@ -0,0 +1,10 @@
[Unit]
Description=starts backups-cleanup.service
[Timer]
OnCalendar={{on_calendar_backups_cleanup}}
RandomizedDelaySec={{randomized_delay_sec}}
Persistent=true
[Install]
WantedBy=timers.target

View File

@@ -0,0 +1 @@
docker_backups_cleanup: "/home/administrator/scripts/backups-cleanup/"