Werkzeugunterstützung für die Abbilderstellung

Es gibt mehrere Werkzeuge, die entworfen sind, um die Abbilderstellung zu automatisieren.

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> `_.

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.

VeeWee

VeeWee <https://github.com/jedi4ever/veewee> `_ wird oft verwendet, um Vagrant-Boxen zu bauen <http://vagrantup.com> `_ , aber es kann auch verwendet werden, um die KVM Abbilder zu bauen.

Packer

`Packer <https://packer.io> `_ ist ein Werkzeug zum Erstellen von Maschinenabbildern für mehrere Plattformen aus einer einzigen Quellkonfiguration.

image-bootstrap

`image-bootstrap <https://github.com/hartwork/image-bootstrap> `_ ist ein Befehlszeilentool, das bootfähige virtuelle Maschinenbilder mit Unterstützung von Arch, Debian, Gentoo, Ubuntu erzeugt und für den Einsatz mit OpenStack vorbereitet ist.

imagefactory

‚imagefactory‘ <http://imgfac.org/> `_ ist ein neueres Werkzeug, das entworfen ist, um das Bauen zu automatisieren, umzuwandeln und Abbilder auf verschiedene Cloud-Anbieter hochzuladen. Es nutzt Oz als Back-End und beinhaltet Unterstützung für OpenStack-basierte Clouds.

KIWI

Der `KIWI OS Abbildbauer <http://github.com/openSUSE/kiwi> `_ bietet einen Betriebssystem-Image-Builder für verschiedene Linux-unterstützte Hardware-Plattformen sowie für Virtualisierungs- und Cloud-Systeme. Es ermöglicht den Aufbau von Abbildern auf Basis von openSUSE, SUSE Linux Enterprise und Red Hat Enterprise Linux. Die `openSUSE Dokumentation <https://doc.opensuse.org/#kiwi-doc> `_ erklärt, wie man KIWI benutzt.

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

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.

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.