From e9752c560a7f66c5dd093b5ec57062f7058f283f Mon Sep 17 00:00:00 2001 From: Timo Makinen Date: Tue, 17 Dec 2024 00:23:31 +0000 Subject: [PATCH] kvm_host: Add script for checking orphaned vm data --- roles/kvm_host/files/check-orphaned-vm.sh | 24 +++++++++++++++++++++++ roles/kvm_host/tasks/main.yml | 15 ++++++++++++++ 2 files changed, 39 insertions(+) create mode 100755 roles/kvm_host/files/check-orphaned-vm.sh diff --git a/roles/kvm_host/files/check-orphaned-vm.sh b/roles/kvm_host/files/check-orphaned-vm.sh new file mode 100755 index 0000000..43954e1 --- /dev/null +++ b/roles/kvm_host/files/check-orphaned-vm.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +set -eu + +# check that all vm's are in ldap +virsh list --all --name | while read -r vm ; do + [ "$vm" = "" ] && continue + if ! ldapsearch -LLL "(&(cn=${vm})(objectClass=device))" dn 2> /dev/null | \ + grep -qE "^dn: cn=${vm},ou=Hosts," + then + echo "WARNING: Host \"${vm}\" registered in KVM but not in LDAP" 1>62 + fi +done + +# check that all disks have owner +for dir in /srv/libvirt/{hdd,nvme,os,ssd} ; do + [ -d "$dir" ] || continue + find "$dir" -name \*.img | while read -r image ; do + vm="$(basename "$image" ".img" | sed -e 's/\.[a-z]$//')" + if ! virsh dominfo "$vm" > /dev/null 2>&1 ; then + echo "WARNING: Orphaned disk image \"${image}\" found" 1>&2 + fi + done +done diff --git a/roles/kvm_host/tasks/main.yml b/roles/kvm_host/tasks/main.yml index 6ed94d4..78ea78e 100644 --- a/roles/kvm_host/tasks/main.yml +++ b/roles/kvm_host/tasks/main.yml @@ -53,3 +53,18 @@ name: libvirtd state: started enabled: true + +- name: Install script for checking orphaned vm's + ansible.builtin.copy: + dest: /usr/local/bin/check-orphaned-vm + src: check-orphaned-vm.sh + mode: "0755" + owner: root + group: "{{ ansible_wheel }}" + +- name: Add cronjob to check orphaned vm's + ansible.builtin.cron: + name: check-orphaned-vm + hour: "5" + minute: "5" + job: /usr/local/bin/check-orphaned-vm