VM für Template vorbereiten

Viele Hypervisor (VMware, Proxmox, OpenStack,…) unterstützen sogenannten „VM Templates“. Damit lässt sich eine VM mit einem Betriebssystem vorinstallieren und mittels Cloud-init kann dann bei der Erzeugung der VM aus einem Template noch die spezifische Konfiguration, wie Hostname, Netzwerk/IP und Passwort konfiguriert werden. Dies geschieht in den meisten Fällen mit Cloud-init.
Zuvor sollte die VM jedoch entsprechend „vorbereitet“ werden, so dass Hostname, IP Konfiguration, Logs, Passwörter usw. aus dem System entfernt werden, bevor es zum „Template“ umgewandelt wird.
Dieser Prozess wird in der Fachsprache „generalisiert“ (bzw. „generalize“) genannt.

Inhalt

Anforderungen

Linux Abhängigkeiten

Die VM, welche als Template verwendet wird, sollte die folgenden Pakete installiert haben:

  • curl
  • wget
  • git
  • net-tools
  • unzip
  • apparmor-parser
  • ca-certificates
  • cloud-init
  • cloud-guest-utils
  • cloud-image-utils
  • growpart (part of cloud-guest-utils)
  • cloud-initramfs-growroot
  • open-iscsi
  • openssh-server
  • open-vm-tools (nur für VMware; für andere Hypervisors ist das nicht nötig)

Windows Abhängigkeiten

Auf Windows müssen die folgenden Softwarepakte installiert sein:

Vorbereitungen der VM

Linux VM Vorbereitung

Die folgenden Kommandos setzen ein Linux quasi auf den „Ursprungszustand“ (reset) und entfernen auch Hostname und IP Konfiguration beim nächsten Neustart:

# Cleaning logs.
if [ -f /var/log/audit/audit.log ]; then
  cat /dev/null > /var/log/audit/audit.log
fi
if [ -f /var/log/wtmp ]; then
  cat /dev/null > /var/log/wtmp
fi
if [ -f /var/log/lastlog ]; then
  cat /dev/null > /var/log/lastlog
fi

# Cleaning udev rules
if [ -f /etc/udev/rules.d/70-persistent-net.rules ]; then
  rm /etc/udev/rules.d/70-persistent-net.rules
fi

# Cleaning the /tmp directories
rm -rf /tmp/*
rm -rf /var/tmp/*

# Cleaning the SSH host keys
rm -f /etc/ssh/ssh_host_*

# Cleaning the machine-id
truncate -s 0 /etc/machine-id
rm /var/lib/dbus/machine-id
ln -s /etc/machine-id /var/lib/dbus/machine-id

# Cleaning the shell history
unset HISTFILE
history -cw
echo > ~/.bash_history
rm -fr /root/.bash_history

# Truncating hostname, hosts, resolv.conf and setting hostname to localhost
truncate -s 0 /etc/{hostname,hosts,resolv.conf}
hostnamectl set-hostname localhost

# Clean cloud-init
cloud-init clean -s -l

Windows Vorbereitungen

Windows verfügt über ein Dienstprogramm namens sysprep, mit dem ein Image generalisiert- und die gleichen Elemente wie oben für Linux aufgeführten zurückgesetzt werden können. Der Befehl lautet wie folgt:

sysprep.exe /generalize /shutdown /oobe

Das Template erstellen

Jetzt kann die VM heruntergefahren- und danach als Template umgewandelt werden.

Quellen

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert