diff --git a/playbooks/3_service/docker.yml b/playbooks/3_service/docker.yml index 568953f4..696a38fe 100644 --- a/playbooks/3_service/docker.yml +++ b/playbooks/3_service/docker.yml @@ -19,3 +19,6 @@ - role: mgrote_docker_compose_inline tags: "compose" become: true + - role: mgrote_docker_housekeeping + tags: "housekeeping" + become: true diff --git a/roles/mgrote_docker_housekeeping/defaults/main.yml b/roles/mgrote_docker_housekeeping/defaults/main.yml new file mode 100644 index 00000000..2766b870 --- /dev/null +++ b/roles/mgrote_docker_housekeeping/defaults/main.yml @@ -0,0 +1,3 @@ +--- +docker_housekeeping_schedule: "weekly" +... diff --git a/roles/mgrote_docker_housekeeping/handlers/main.yml b/roles/mgrote_docker_housekeeping/handlers/main.yml new file mode 100644 index 00000000..8b790b7f --- /dev/null +++ b/roles/mgrote_docker_housekeeping/handlers/main.yml @@ -0,0 +1,14 @@ +--- +- name: systemctl daemon-reload + become: true + ansible.builtin.systemd: + daemon_reload: true + notify: Start timer + +- name: Start timer + become: true + ansible.builtin.systemd: + name: docker_housekeeping.timer + state: restarted + enabled: true + notify: systemctl daemon-reload diff --git a/roles/mgrote_docker_housekeeping/tasks/main.yml b/roles/mgrote_docker_housekeeping/tasks/main.yml new file mode 100644 index 00000000..7037f603 --- /dev/null +++ b/roles/mgrote_docker_housekeeping/tasks/main.yml @@ -0,0 +1,36 @@ +--- +- name: Setup docker housekeeping tasks + become: true + ansible.builtin.template: + src: docker_housekeeping.service.j2 + dest: /etc/systemd/system/docker_housekeeping.service + owner: root + group: root + mode: "0644" + notify: + - systemctl daemon-reload + +- name: Setup timer + become: true + ansible.builtin.template: + src: docker_housekeeping.timer.j2 + dest: /etc/systemd/system/docker_housekeeping.timer + owner: root + group: root + mode: "0644" + notify: + - systemctl daemon-reload + - Start timer + +- name: Enable Units + become: true + ansible.builtin.systemd: + name: "{{ item }}" + enabled: true + masked: false + with_items: + - docker_housekeeping.service + - docker_housekeeping.timer + notify: + - Start timer +... diff --git a/roles/mgrote_docker_housekeeping/templates/docker_housekeeping.service.j2 b/roles/mgrote_docker_housekeeping/templates/docker_housekeeping.service.j2 new file mode 100644 index 00000000..ae40c6d4 --- /dev/null +++ b/roles/mgrote_docker_housekeeping/templates/docker_housekeeping.service.j2 @@ -0,0 +1,8 @@ +{{ file_header | default () }} +[Unit] +Description=Docker housekeeping tasks + +[Service] +Type=simple +ExecStart=/usr/bin/docker system prune --force --filter "until=24h" +# https://docs.docker.com/config/pruning diff --git a/roles/mgrote_docker_housekeeping/templates/docker_housekeeping.timer.j2 b/roles/mgrote_docker_housekeeping/templates/docker_housekeeping.timer.j2 new file mode 100644 index 00000000..62caca39 --- /dev/null +++ b/roles/mgrote_docker_housekeeping/templates/docker_housekeeping.timer.j2 @@ -0,0 +1,11 @@ +{{ file_header | default () }} +[Unit] +Description=Timer for docker_housekeeping backups. + +[Timer] +# https://wiki.archlinux.org/title/systemd/Timers +OnCalendar={{ docker_housekeeping_schedule }} +RandomizedDelaySec=30 min + +[Install] +WantedBy=timers.target multi-user.target