From c9a8598a353e2bb3ccb7aed95bd2ec79e6617d2c Mon Sep 17 00:00:00 2001 From: Danny Bessems Date: Wed, 23 Nov 2022 10:25:35 +0100 Subject: [PATCH] Move tarball compression to background service;Housekeeping --- .../roles/cleanup/tasks/cron.yml | 4 ++++ .../roles/cleanup/tasks/main.yml | 14 ++--------- .../roles/cleanup/tasks/service.yml | 24 +++++++++++++++++++ .../templates/compresstarballs.j2 | 10 ++++++++ .../ansible_payload/templates/systemdunit.j2 | 9 +++++++ 5 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/cron.yml create mode 100644 ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/service.yml create mode 100644 ansible/roles/firstboot/files/ansible_payload/templates/compresstarballs.j2 create mode 100644 ansible/roles/firstboot/files/ansible_payload/templates/systemdunit.j2 diff --git a/ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/cron.yml b/ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/cron.yml new file mode 100644 index 0000000..dd85e94 --- /dev/null +++ b/ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/cron.yml @@ -0,0 +1,4 @@ +- name: Disable crontab job + ansible.builtin.cron: + name: firstboot + state: absent diff --git a/ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/main.yml b/ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/main.yml index 0431dd6..3f3e933 100644 --- a/ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/main.yml +++ b/ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/main.yml @@ -1,10 +1,5 @@ -- name: Compress tarballs - community.general.archive: - dest: /opt/metacluster/container-images/image-tarballs.tgz - path: /opt/metacluster/container-images/*.tar - format: gz - remove: yes - ignore_errors: yes +- import_tasks: service.yml +- import_tasks: cron.yml - name: Cleanup tempfile ansible.builtin.file: @@ -12,11 +7,6 @@ state: absent when: kubeconfig.path is defined -- name: Disable crontab job - ansible.builtin.cron: - name: firstboot - state: absent - - name: Reboot host ansible.builtin.shell: cmd: /usr/sbin/reboot now diff --git a/ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/service.yml b/ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/service.yml new file mode 100644 index 0000000..20ad7a2 --- /dev/null +++ b/ansible/roles/firstboot/files/ansible_payload/roles/cleanup/tasks/service.yml @@ -0,0 +1,24 @@ +- name: Create tarball compression service + ansible.builtin.template: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + owner: root + group: root + mode: "{{ item.mode | default(omit) }}" + vars: + _template: + service: + name: compressTarballs + executable: /opt/firstboot/compresstarballs.sh + workingdir: /opt/metacluster/container-images/ + loop: + - src: compresstarballs.j2 + dest: "{{ _template.service.executable }}" + mode: o+x + - src: systemdunit.j2 + dest: /etc/systemd/system/{{ _template.service.name }}.service + +- name: Enable tarball compression service + ansible.builtin.systemd: + name: compressTarballs + enabled: yes diff --git a/ansible/roles/firstboot/files/ansible_payload/templates/compresstarballs.j2 b/ansible/roles/firstboot/files/ansible_payload/templates/compresstarballs.j2 new file mode 100644 index 0000000..69021ef --- /dev/null +++ b/ansible/roles/firstboot/files/ansible_payload/templates/compresstarballs.j2 @@ -0,0 +1,10 @@ +#!/bin/bash + +# Change working directory +popd {{ _template.service.workingdir }} + +# Compress *.tar files +if tar -czf image-tarballs.tgz *.tar; then + # Disable systemd unit + systemctl disable {{ _template.service.name }} +fi diff --git a/ansible/roles/firstboot/files/ansible_payload/templates/systemdunit.j2 b/ansible/roles/firstboot/files/ansible_payload/templates/systemdunit.j2 new file mode 100644 index 0000000..47f8a03 --- /dev/null +++ b/ansible/roles/firstboot/files/ansible_payload/templates/systemdunit.j2 @@ -0,0 +1,9 @@ +[Unit] +Description={{ _template.service.name }} + +[Service] +ExecStart={{ _template.service.executable }} +Nice=10 + +[Install] +WantedBy=multi-user.target