Virt-Builder ist ein Befehlszeilentool zum einfachen und schnellen Erstellen einer Vielzahl von Images virtueller Maschinen für die lokale oder Cloud-Nutzung. Es hat auch viele Optionen, um die Bilder anzupassen. Sie können neue Anwendungen auf dem VM-Image installieren, den Hostnamen festlegen, das Root-Passwort festlegen, einen Befehl oder ein Skript ausführen, wenn die Gast-VM zum ersten Mal startet, Dateien im Disk-Image hinzufügen oder bearbeiten und vieles mehr. Alle diese Aufgaben können über die Befehlszeile ausgeführt werden und erfordern keine Root-Berechtigungen.
Virt-Builder lädt die sauber vorbereiteten, digital signierten Betriebssystemvorlagen herunter, sodass Sie das Betriebssystem nicht manuell installieren müssen. Dazu müssen Sie nur den Virt-Manager verwenden GUI oder Virt-install Befehlszeilentool, um die VMs sofort mit den vordefinierten Vorlagen zu starten. Virt-Builder bietet minimale Betriebssystemvorlagen für beliebte Linux- und Unix-Varianten. Sie können natürlich auch Ihre eigene Vorlage erstellen.
Virt-Builder unter Linux installieren
Virt-builder ist Teil der Libguestfs-Bibliothek, stellen Sie also sicher, dass Sie es wie in der folgenden Anleitung beschrieben installiert haben.
- Auf Disk-Images virtueller Maschinen mit Libguestfs zugreifen und sie ändern
Images virtueller Maschinen mit Virt-Builder erstellen
Das Erstellen von Images virtueller Maschinen mit Virt-builder ist ziemlich einfach und unkompliziert.
Verfügbare Vorlagen für virtuelle Maschinen auflisten
Listen Sie zunächst die verfügbaren Betriebssystemvorlagen auf. Führen Sie dazu Folgendes aus:
$ virt-builder --list
Zum Zeitpunkt der Erstellung dieses Leitfadens waren die folgenden Vorlagen verfügbar:
centos-6 x86_64 CentOS 6.6centos-7.0 x86_64 CentOS 7.0centos-7.1 x86_64 CentOS 7.1centos-7.2 aarch64 CentOS 7.2 (aarch64)centos-7.2 x86_64 CentOS 7.2centos-7.3 x86_64 CentOS 7.3centos-7.4 x86_64 CentOS 7,5 x86_64 Centos 7.5 Centos-7,6 x86_64 Centos 7.6 Centos-7,7 x86_64 Centos 7.7Centos-7,8 x86_64 Centos 7.8Centos-8.0 x86_64 Centos 8.0centos-8.2 x864. 0.3.5debian-10 x86_64 Debian 10 (Buster)debian-6 x86_64 Debian 6 (Squeeze)debian-7 sparc64 Debian 7 (Wheezy) (sparc64)debian-7 x86_64 Debian 7 (Wheezy)debian-8 x86_64 Debian 8 (Jessie) debian-9 x86_64 Debian 9 (stretch)fedora-26 aarch64 Fedora® 26 Server (aarch64)fedora-26 armv7l Fedora® 26 Server (armv7l)fedora-26 i686 Fedora® 26 Server (i686)fedora-26 ppc64 Fedora® 26 Server (ppc64) fedora-26 ppc64le Fedora® 26-Server (ppc64le)fedora-26 x86_64 Fedora® 26-Server )fedora-27 ppc64 Fedora® 27 Server (ppc64)fedora-27 ppc64le Fedora® 27 Server (ppc64le)fedora-27 x86_64 Fedora® 27 Serverfedora-28 i686 Fedora® 28 Server (i686)fedora-28 x86_64 Fedora® 28 Serverfedora- 29 aarch64 Fedora® 29 Server (aarch64)fedora-29 i686 Fedora® 29 Server (i686) fedora-29 ppc64le Fedora® 29-Server (ppc64le)fedora-29 x86_64 Fedora® 29-Server x86_64 Fedora® 31 Serverfedora-32 x86_64 Fedora® 32 Serverfreebsd-11.1 x86_64 FreeBSD 11.1scientificlinux-6 x86_64 Scientific Linux-10.04 6.5ubuntu x86_64 Ubuntu 10.04 (Lucid) ubuntu-12,04 x86_64 Ubuntu 12.04 (Precise) ubuntu-14,04 x86_64 Ubuntu 14.04 (Trusty )ubuntu-16.04 x86_64 Ubuntu 16.04 (Xenial)ubuntu-18.04 x86_64 Ubuntu 18.04 (bionic)fedora-18 x86_64 Fedora® 18fedora-19 x86_64 Fedora® 19fedora-20 x86_64 Fedora® 20fedora-20 x86_64 Fedora® 20fedora-21 (aarch® 64 Serverfora) 21 armv7l Fedora® 21 Server (armv7l)fedora-21 ppc64 Fedora® 21 Server (ppc64)fedora-21 ppc64le Fedora® 21 Server (ppc64le)fedora-21 x86_64 Fedora® 21 Serverfedora-22 aarch64 Fedora® 22 Server (aarch64)fedora- 22 armv7l Fedora® 22 Server (armv7l)fedora-22 i686 Fedora® 22 Server (i686)fedora-22 x86_64 Fedora® 22 Serverfedora-23 aarch64 Fedora® 23 Server (aarch64)fedora-23 armv7l Fedora® 23 Server (armv7l)fedora -23 i686 Fedora® 23 Server (i686)fedora-23 ppc64 Fedora® 23 Server (ppc64)fedora-23 ppc64le Fedora® 23 Server (ppc64le)fedora-23 x86_64 Fedora® 23 Serverfedora-24 aarch64 Fedora® 24 Server (aarch64) fedora-24 armv7l Fedora® 24 Server (armv7l)fedora-24 i686 Fedora® 24 S Server (i686)fedora-24 x86_64 Fedora® 24 Serverfedora-25 aarch64 Fedora® 25 Server (aarch64)fedora-25 armv7l Fedora® 25 Server (armv7l)fedora-25 i686 Fedora® 25 Server (i686)fedora-25 ppc64 Fedora® 25 Server (ppc64)fedora-25 ppc64le Fedora® 25 Server (ppc64le)fedora-25 x86_64 Fedora® 25 Serveropensuse-13.1 x86_64 openSUSE 13.1opensuse-13.2 x86_64 openSUSE 13.2opensuse-42.1 x86_64 openSUSE Leap x 42.1 vor>![]()
Verfügbare virtuelle Maschinen mit Virt-Builder auflisten
Wie Sie sehen können, sind mehrere Betriebssystemvorlagen verfügbar.
Bevor Sie ein Image einer virtuellen Maschine erstellen, sollten Sie sich die Installationshinweise des Gastbetriebssystems ansehen, um zu erfahren, was darin enthalten ist.
Um beispielsweise die Installationshinweise von Debian 10 anzuzeigen, führen Sie Folgendes aus:
$ virt-builder --notes debian-10Beispielausgabe:
Debian 10 (Buster) Dies ist eine minimale Debian-Installation. Dieses Image ist so minimal, dass es nur einen SSH-Server enthält. Dieses Image enthält keine SSH-Hostschlüssel. Verwenden Sie zum Neugenerieren:--firstboot-command "dpkg-reconfigure openssh-server" dasselbe Verzeichnis.Erstellen Sie ein Image einer virtuellen Maschine
Ich wollte die Betriebssystemvorlagen in ein bestimmtes Verzeichnis herunterladen, also habe ich dieses Verzeichnis erstellt:
$ mkdir virtbuilder$ cd virtbuilder/Lassen Sie uns die virtuelle Debian 10-Maschine mit folgendem Befehl erstellen:
$ virt-builder debian-10Beispielausgabe:
[ 4.8] Herunterladen:http://builder.libguestfs.org/debian-10.xz############################ ################################################## ######## 100.0%[ 83.2] Planen, wie dieses Image erstellt werden soll[ 83.2] Dekomprimieren[ 101.2] Öffnen der neuen Festplatte[ 119.8] Setzen eines zufälligen Seedvirt-Builders:Warnung:Random Seed konnte dafür nicht gesetzt werden Gasttyp[119.9] Passwörter setzenvirt-builder:Zufälliges Passwort von root auf 66xW1CaIqfM8km2v setzen [ 121.5] Fertigstellung der Ausgabedatei:debian-10.img Ausgabegröße:6.0G Ausgabeformat:raw Insgesamt nutzbarer Speicherplatz:5,8 GB Freier Speicherplatz:4,9 GB (84 %)![]()
Erstellen Sie Images virtueller Maschinen mit virt-builder unter Linux
Wie Sie sehen können, hat dieser Befehl das minimale Debian 10-Image erstellt. Es wird keine Benutzerkonten haben. Es wird nur ein zufälliges Root-Passwort und das Nötigste an installierter Software haben.
Der Ausgabename des Bildes sollte mit dem Vorlagennamen übereinstimmen. Sie können es mit dem -o nach Belieben ändern Möglichkeit:
$ virt-builder debian-10 -o ostechnix.imgStandardmäßig ist das Bildformat img . Sie können es in ein anderes Format konvertieren, zum Beispiel Qcow2, wie unten:
$ virt-builder debian-10 --format qcow2Standardmäßig erstellt Virt-Builder das Image genauso wie die Architektur des Host-Betriebssystems. Wenn Ihr Host-Betriebssystem beispielsweise 64-Bit ist, wird es dann eine 64-Bit-VM erstellen. Sie können dies mit --arch auf 32-Bit (falls verfügbar) ändern Option.
$ virt-builder debian-10 --arch i686Möchten Sie ein Bild in benutzerdefinierter Größe erstellen? Es ist auch möglich. Der folgende Befehl erstellt eine VM mit einer Größe von 50 GB:
$ virt-builder debian-10 --size 50GDie Größe des Gastbetriebssystems wird automatisch mit virt-resize angepasst Befehl, wie er in die Ausgabe kopiert wird.
Root-Passwort festlegen
Wie ich bereits erwähnt habe, wird dem Root-Benutzerkonto beim Erstellen des Images ein zufälliges Passwort zugewiesen. Wenn Sie ein bestimmtes Passwort für den Root-Benutzer festlegen möchten, verwenden Sie --root-password Option wie unten:
$ virt-builder centos-8.2 --format qcow2 --root-password password:centosBeispielausgabe:
[ 5.1] Herunterladen:http://builder.libguestfs.org/centos-8.2.xz ######################### ################################################## ######## 100,0 %[ 249.2] Planen, wie dieses Image erstellt werden soll[ 249.2] Dekomprimieren[ 271.3] Konvertieren von Raw in qcow2[ 281.1] Öffnen der neuen Festplatte[ 319.9] Setzen eines zufälligen Seeds[ 320.4] Setzen von Passwörtern[ 323.0] Abschluss Ausgabedatei:centos-8.2.qcow2 Ausgabegröße:6,0 GB Ausgabeformat:qcow2 Insgesamt nutzbarer Speicherplatz:5,3 GB Freier Speicherplatz:4,0 GB (74 %)Der obige Befehl erstellt ein CentOS 8.2-Image und weist dem Root-Benutzer ein Passwort als "centos" zu .
Sie können das Passwort auch aus einer Textdatei festlegen:
$ virt-builder centos-8.2 --root-password file:~/ostechnix.txtUm das Root-Passwort zu deaktivieren, führen Sie Folgendes aus:
$ virt-builder centos-8.2 --root-password deaktiviertRoot-Konto sperren:
$ virt-builder centos-8.2 --root-Passwort gesperrtRoot-Konto sperren und Root-Passwort deaktivieren:
$ virt-builder centos-8.2 --root-password locked:disabledUm das Root-Passwort zuzuweisen, aber das Root-Konto zu sperren, verwenden Sie die folgenden Optionen:
--root-Passwort gesperrt:Datei:DATEINAME--root-Passwort gesperrt:Passwort:PASSWORTWir können das Root-Passwort verwenden, nachdem wir den Root-Benutzer mit "passwd -u" entsperrt haben Befehl.
Benutzer erstellen
Führen Sie zum Erstellen von Benutzerkonten beim Erstellen eines Images einer virtuellen Maschine Folgendes aus:
$ virt-builder centos-8.2 --firstboot-command 'useradd -m -p "" sk; ändern -d 0 sk'Der obige Befehl erstellt einen Benutzer namens "sk" ohne Passwort und zwingt ihn, bei seiner ersten Anmeldung ein Passwort festzulegen.
Hostnamen festlegen
So legen Sie den Hostnamen für die VM fest:
$ virt-builder centos-8.2 --hostname virt.ostechnix.localBeispielausgabe:
[ 4.7] Herunterladen:http://builder.libguestfs.org/centos-8.2.xz[ 7.2] Planen, wie dieses Image erstellt werden soll[ 7.2] Dekomprimieren[ 31.0] Öffnen der neuen Festplatte[ 41.9] Setzen eines zufälligen Seeds [ 42.0] Festlegen des Hostnamens:virt.ostechnix.local [ 42.1] Festlegen von Passwörternvirt-builder:Festlegen eines zufälligen Passworts von root auf MRn7fj1GSaeCAHQx[ 44.4] Abschluss Ausgabedatei:centos-8.2.img Ausgabegröße:6,0 GB Ausgabeformat:raw Insgesamt nutzbarer Speicherplatz:5,3 GB Freier Speicherplatz:4,0 GB (74 %)Software auf VM-Image installieren
Um Pakete auf einer VM zu installieren, führen Sie Folgendes aus:
$ virt-builder debian-10 --install vimBeispielausgabe:
[ 5.8] Herunterladen:http://builder.libguestfs.org/debian-10.xz[ 7.4] Planen, wie dieses Image erstellt werden soll[ 7.4] Dekomprimieren[ 25.3] Öffnen der neuen Festplatte[ 29.7] Setzen eines zufälligen Seedvirt -builder:Warnung:Random Seed konnte für diesen Gasttyp nicht gesetzt werden[ 29.8] Pakete installieren:vim [ 93.2] Passwörter setzenvirt-builder:Zufälliges Passwort von root auf 45Hj5yxh8vRqLDcu setzen[ 94.9] Abschluss Ausgabedatei:debian-10.img Ausgabegröße:6,0 GB Ausgabeformat:raw Insgesamt nutzbarer Speicherplatz:5,8 GB Freier Speicherplatz:4,8 GB (82 %)Um mehrere Pakete zu installieren, erwähnen Sie sie in Anführungszeichen, mit Komma-getrennt wie unten:
$ virt-builder debian-10 --install "apache2,htop"Aktualisieren Sie alle Pakete in der VM:
$ virt-builder centos-8.2 --updateWenn Ihre VM SELinux verwendet, müssen Sie nach der Installation oder Aktualisierung von Paketen eine SELinux-Umbenennung durchführen:
$ virt-builder centos-8.2 --update --selinux-relabelVM-Images anpassen
Virt-Builder hat viele Optionen, um ein Bild anzupassen. Beispielsweise können Sie einen bestimmten Befehl/ein bestimmtes Skript ausführen, wenn die VM zum ersten Mal mit dem Befehl startet:
$ virt-builder debian-10 --firstboot-command 'apt -y update'Führen Sie zum Hinzufügen einer Zeile in der VM Folgendes aus:
$ virt-builder centos-8.2 --append-line '/etc/hosts:192.168.225.1 server.ostechnix.local'Caching-Vorlagen
Standardmäßig werden alle Vorlagen zum ersten Mal aus dem Netzwerk heruntergeladen. Da die Größe der Vorlagen groß ist, werden die heruntergeladenen Vorlagen im Home-Verzeichnis des Benutzers zwischengespeichert.
Mit dem folgenden Befehl können Sie die Details des Cache-Verzeichnisses und die derzeit zwischengespeicherten Vorlagen drucken:
$ virt-builder --print-cacheBeispielausgabe:
Cache-Verzeichnis:/home/sk/.cache/virt-builder[...]centos-7.8 x86_64 nocentos-8.0 x86_64 nocentos-8.2 x86_64 zwischengespeichert cirros-0.3.1 x86_64 nocirros-0.3.5 x86_64 nodebian-10 x86_64 zwischengespeichert debian-6 x86_64 nodebian-7 sparc64 no[...]Sie können dies auch überprüfen, indem Sie manuell im Cache-Ordner nachsehen:
$ ls $HOME/.cache/virt-builder centos-8.2.x86_64.1 debian-10.x86_64.1Um alle verfügbaren Vorlagen in Ihren lokalen Cache-Ordner herunterzuladen, führen Sie Folgendes aus:
$ virt-builder --cache-all-templatesWenn Sie die Vorlage nicht zwischenspeichern möchten, während Sie das Bild erstellen, verwenden Sie --no-cache Option.
Um alle zwischengespeicherten Vorlagen zu löschen, führen Sie Folgendes aus:
$ virt-builder --delete-cache [ 0.0] Löschen:/home/sk/.cache/virt-builderDisk-Images in den Hypervisor importieren
Nun, Sie haben Ihr gewünschtes Betriebssystem heruntergeladen und nach Ihren Wünschen angepasst. Was jetzt? Importieren Sie einfach das Image und führen Sie eine VM mit dem neu erstellten Disk-Image mit einem Hypervisor aus. Wir haben bereits eine Schritt-für-Schritt-Anleitung zum Erstellen einer virtuellen KVM-Maschine mit dem Qcow2-Image geschrieben. Diese Anleitung wurde speziell für Qcow2 geschrieben, sie gilt jedoch auch für den Import von .img Disk-Images auch formatieren.
- Erstellen Sie eine virtuelle KVM-Maschine mit dem Qcow2-Image unter Linux
Virt-Builder hat Hunderte von Befehlen und Optionen. Ich habe hier nur die grundlegenden Befehle behandelt. Weitere Einzelheiten finden Sie im Handbuch Alter.
$ man virt-builder
Vorgestelltes Foto von Igor Starkov von Pexels .