Tools to automate image creation¶
Es gibt mehrere Werkzeuge, die entworfen sind, um die Abbilderstellung zu automatisieren.
OpenStack tools¶
Diskimage-Builder¶
`Diskimage-Builder <https://docs.openstack.org/diskimage-builder/latest/> `_ ist ein automatisiertes Festplatten-Image-Erstellungswerkzeug, das eine Vielzahl von Distributionen und Architekturen unterstützt. Diskimage-Builder (DIB) kann Abbilder für Fedora, Red Hat Enterprise Linux, Ubuntu, Debian, CentOS und openSUSE erstellen. DIB ist in einer Reihe von Elementen organisiert, die aufeinander aufbauen, um bestimmte Abbilder zu erstellen.
Um ein Abbild zu erstellen, rufen Sie das folgende Skript auf:
# disk-image-create ubuntu vm
Dieses Beispiel erstellt ein generisches, bootfähiges Ubuntu-Abbild der neuesten Version.
Eine weitere Anpassung könnte durch das Setzen von Umgebungsvariablen oder das Hinzufügen von Elementen zu der Befehlszeile erreicht werden:
# disk-image-create -a armhf ubuntu vm
Dieses Beispiel erschafft das Abbild wie bisher, aber für die Arm-Architektur. Weitere Elemente stehen im git Quellverzeichnis zur Verfügung und dokumentiert in der` diskimage-builder elements documentation <https://docs.openstack.org/diskimage-builder/latest/elements.html> `_.
External tools¶
image-bootstrap¶
image-bootstrap is a command line tool that generates bootable virtual machine images with support for Arch, Debian, Gentoo and Ubuntu, and is prepared for use with OpenStack.
KIWI¶
The KIWI appliance builder provides an operating system image builder for various Linux supported hardware platforms as well as for virtualization and cloud systems. It allows building of images based on openSUSE, SUSE Linux Enterprise, and Red Hat Enterprise Linux. The KIWI NG Documentation explains how to use it.
openstack-debian-images¶
openstack-debian-images is the tool Debian uses to create its official OpenStack image. It is made of a single very simple shell script that is easy to understand and modify. It supports Grub and Syslinux, BIOS or EFI, amd64 and arm64 arch.
openstack-debian-images can also be used to create a bootable image directly on a hard disk, instead of using the Debian installer.
Um ein Abbild zu erstellen, geben Sie ein:
# build-openstack-debian-image --release stretch
More parameters can be added to further customize the image:
# build-openstack-debian-image --release stretch \
--hook-script /root/my-hook-script.sh \
--debootstrap-url http://ftp.fr.debian.org/debian \
--sources.list-mirror http://ftp.fr.debian.org/debian \
--login myusername \
--extra-packages vim,emacs
The file /root/my-hook-script.sh
will recieve 2 environment variable:
BODI_CHROOT_PATH
path where the image is mounted, and BODI_RELEASE
which is the name of the Debian release that is being bootstraped. Here’s
an example for customizing the motd:
# #!/bin/sh
set -e
echo "My message" >${BODI_CHROOT_PATH}/etc/motd
This hook script will conveniently be called at the correct moment of the build process, when everything is installed, but before unmounting the partition.
Oz¶
Oz <https://github.com/clalancette/oz/wiki> `_ ist ein Befehlszeilentool, das den Prozess der Erstellung einer virtuellen Maschinenbilddatei automatisiert. Oz ist eine Python-App, die mit KVM interagiert, um durch den Prozess der Installation einer virtuellen Maschine zu treten.
Es verwendet einen vordefinierten Satz von Kickstart (Red Hat-basierte Systeme) und vorgewählte Dateien (Debian-basierte Systeme) für Betriebssysteme, die es unterstützt, und es kann auch verwendet werden, um Microsoft Windows-Abbilder zu erstellen.
Eine vollständige Behandlung von Oz geht über den Rahmen dieses Dokuments hinaus, aber wir werden ein Beispiel geben. Hier finden Sie weitere Beispiele für Oz-Template-Dateien auf GitHub unter `rcbops/oz-image-build/tree/master/templates <https://github.com/rcbops/oz-image-build/tree/master/templates> `_. Hier steht, wie Sie ein CentOS 6.4 Abbild mit Oz erstellen würden.
Erstellen Sie eine Vorlagendatei mit dem Namen centos64.tdl
mit folgendem Inhalt. Der einzige Eintrag, den Sie ändern müssen, ist der ``<rootpw> `` Inhalt.
<template>
<name>centos64</name>
<os>
<name>CentOS-6</name>
<version>4</version>
<arch>x86_64</arch>
<install type='iso'>
<iso>http://mirror.rackspace.com/CentOS/6/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso</iso>
</install>
<rootpw>CHANGE THIS TO YOUR ROOT PASSWORD</rootpw>
</os>
<description>CentOS 6.4 x86_64</description>
<repositories>
<repository name='epel-6'>
<url>http://download.fedoraproject.org/pub/epel/6/$basearch</url>
<signed>no</signed>
</repository>
</repositories>
<packages>
<package name='epel-release'/>
<package name='cloud-utils'/>
<package name='cloud-init'/>
</packages>
<commands>
<command name='update'>
yum -y update
yum clean all
sed -i '/^HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth0
echo -n > /etc/udev/rules.d/70-persistent-net.rules
echo -n > /lib/udev/rules.d/75-persistent-net-generator.rules
</command>
</commands>
</template>
Diese Oz-Vorlage gibt an, wo das Centos 6.4 install ISO heruntergeladen werden soll. Oz verwendet die Versionsinformationen, um zu identifizieren, welche Kickstart-Datei verwendet werden soll. In diesem Fall wird es ‚RHEL6.auto‘ sein <https://github.com/clalancette/oz/blob/master/oz/auto/RHEL6.auto> _. Es fügt EPEL als Repository hinzu und installiert die ``epel-release`, `` cloud-utils`` und cloud-init
Pakete, wie im packages
Abschnitt der Datei angegeben.
Nachdem Oz die ursprüngliche OS-Installation mit der Kickstart-Datei abgeschlossen hat, passt es das Abbild mit einem Update an. Es entfernt auch jede Referenz auf das eth0-Gerät, das libvirt erzeugt, während Oz das Customizing ausführt, wie im Abschnitt command
der XML-Datei angegeben.
Um dies zu starten:
# oz-install -d3 -u centos64.tdl -x centos64-libvirt.xml
Die ``-d3 `` Option erklärt Oz die Statusinformationen während des Laufs anzuzeigen.
Die
-u
Option erklärt Oz die Anpassung während der initialen Installation (extra Pakete installieren, Kommandos ausführen)Die
-x
Option sagt Oz, welchen Dateinamen Sie verwenden müssen, um eine libvirt-XML-Datei zu schreiben (sonst wird es standardmäßig so etwas wie `` centos64Apr_03_2013-12:39:42`` verwenden).
Wenn Sie die -u
Option weglassen oder wenn Sie die Datei bearbeiten möchten, um zusätzliche Anpassungen zu machen, können Sie den Befehl :command: oz-customize verwenden, erschaffen wird die libvirt XML Datei mit :command:` oz -install` Beispielsweise:
# oz-customize -d3 centos64.tdl centos64-libvirt.xml
Oz wird libvirt aufrufen, um das Abbild innerhalb von KVM zu booten, dann wird Oz ssh in die Instanz starten und die Anpassungen ausführen.
Packer¶
`Packer <https://packer.io> `_ ist ein Werkzeug zum Erstellen von Maschinenabbildern für mehrere Plattformen aus einer einzigen Quellkonfiguration.
virt-builder¶
`Virt-builder <http://libguestfs.org/virt-builder.1.html> `_ ist ein Werkzeug für den schnellen Aufbau neuer virtueller Maschinen. Sie können eine Vielzahl von VMs für lokale oder Cloud-Nutzung, in der Regel innerhalb von ein paar Minuten oder weniger zu bauen. Virt-Builder hat auch viele Möglichkeiten, diese VMs anzupassen. Alles läuft von der Kommandozeile aus und nichts erfordert root-Berechtigungen, so dass Automatisierung und Scripting einfach sind.
Um ein Abbild zu erstellen, rufen Sie das folgende Skript auf:
# virt-builder fedora-23 -o image.qcow2 --format qcow2 \
--update --selinux-relabel --size 20G
Um die zur Installation verfügbaren Betriebssysteme aufzulisten:
$ virt-builder --list
Um es in libvirt zu importieren mit virsh:
# virt-install --name fedora --ram 2048 \
--disk path=image.qcow2,format=qcow2 --import
windows-openstack-imaging-tools¶
windows-openstack-imaging-tools is a PowerShell module that automates the Windows image creation for OpenStack and supports building VHDX, QCOW2, RAW and VMDK image types.
For easier installation, the tool is published as a PowerShellGallery module WindowsImageBuilder.
Windows image build example:
# Install and import WindowsImageBuilder module from PowerShellGallery
Install-Module WindowsImageBuilder -Force
Import-Module WindowsImageBuilder
New-WindowsImageConfig -ConfigFilePath ".\windows-image-config.ini"
# Update the configuration file to fit your specific use case
# Extensive information for all the configuration can be found here:
# https://github.com/cloudbase/windows-openstack-imaging-tools/blob/master/Config.psm1#L21
# Generate the Windows image
New-WindowsOnlineImage -ConfigFilePath ".\windows-image-config.ini"
Requirements:
A Windows host, with Hyper-V virtualization enabled, PowerShell >=v4 support and Windows Assessment and Deployment Kit (ADK).
A Windows installation ISO or DVD.
Windows compatible drivers, if required by the target environment. For example, VirtIO, network card, or storage adapter drivers.
Git environment.