#!/usr/bin/env bash

set -eux

clean_cloud_init() {
  cloud-init clean --logs --machine-id --seed --configs all

  rm -rf /run/cloud-init/*
  rm -rf /var/lib/cloud/*
}

clean_apt() {
  export DEBIAN_FRONTEND=noninteractive

  apt-get -y autopurge
  apt-get -y clean

  rm -rf /var/lib/apt/lists/*
}

clean_ssh_keys() {
  rm -f /etc/ssh/ssh_host_*_key /etc/ssh/ssh_host_*_key.pub
}

clean_logs() {
  journalctl --flush
  journalctl --rotate --vacuum-time=0

  find /var/log -type f -exec truncate --size 0 {} \; # truncate system logs
  find /var/log -type f -name '*.[1-9]' -delete # remove archived logs
  find /var/log -type f -name '*.gz' -delete # remove compressed archived logs
}

clean_root() {
  unset HISTFILE

  rm -rf /root/.cache
  rm -rf /root/.ssh
  rm -f /root/.bash_history
  rm -f /root/.lesshst
  rm -f /root/.viminfo
}

flush_disk() {
  dd if=/dev/zero of=/zero bs=4M || true
  sync
  rm -f /zero
}

clean_cloud_init
clean_apt
clean_ssh_keys
clean_logs
clean_root

flush_disk