イメージ作成のサポートツール

イメージ作成のサポートツール

イメージ作成を自動化するために設計されたツールがいくつかあります。

Diskimage-builder

Diskimage-builder is an automated disk image creation tool that supports a variety of distributions and architectures. Diskimage-builder (DIB) can build images for Fedora, Red Hat Enterprise Linux, Ubuntu, Debian, CentOS, and openSUSE. DIB is organized in a series of elements that build on top of each other to create specific images.

以下のスクリプトを実行し、イメージを構築します。

# disk-image-create ubuntu vm

この例は、最新リリースの Ubuntu の汎用的なブート可能なイメージを作成します。

環境変数を設定したり、コマンドラインでエレメントを追加で指定することで、さらにカスタマイズできます。

# disk-image-create -a armhf ubuntu vm

This example creates the image as before, but for arm architecture. More elements are available in the git source directory and documented in the diskimage-builder elements documentation.

Oz

Oz は、仮想マシンイメージファイルの作成手順を自動化するコマンドラインツールです。 Oz は 、KVM とやり取りを行う Python アプリケーションで、仮想マシンのインストール手順を順に行います。

サポートするオペレーティングシステム用の事前定義された kickstart (Red Hat 系システム)、preseed ファイル (Debian 系システム) を使用します。Microsoft Windows イメージを作成するためにも使用できます。

Oz の詳細は、このドキュメントの範囲を超えていますが、例を挙げておきます。GitHub の rcbops/oz-image-build/tree/master/templates にも Oz テンプレートの例があります。以下は、Oz を用いて CentOS 6.4 イメージを作成する方法です。

以下の内容で centos64.tdl という名前のテンプレートファイルを作成します。変更する必要がある項目は、<rootpw> の内容だけです。

<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>

この Oz テンプレートでは、Centos 6.4 インストール ISO のダウンロード場所を指定します。Oz は、バージョン情報を使って、使用する kickstart ファイルを識別します。この場合は、RHEL6.auto になります。リポジトリーとして EPEL を追加し、このファイルの packages セクションに指定されている epel-releasecloud-utilscloud-init パッケージをインストールします。

kickstart ファイルを使用して OS の初期インストールを終えると、Oz はアップデートと行うとともにイメージをカスタマイズします。Oz は libvirt が作成する eth0 デバイスへの参照をすべて削除します。また、XML ファイルの command セクションの指定にもとづいてカスタマイズを行います。

以下を実行します。

# oz-install -d3 -u centos64.tdl -x centos64-libvirt.xml
  • -d3 フラグにより、Oz が実行中の状態を表示するように指定します。
  • -u により、初期インストール完了後に、Oz がカスタマイズ (追加パッケージのインストール、コマンドの実行) を行うように指定します。
  • -x フラグにより、Oz が libvirt XML ファイルを書き出すのに使用するファイル名を指定します (指定しない場合、デフォルトでは centos64Apr_03_2013-12:39:42 のようなファイル名になります)。

-u フラグを使用しない場合、またはファイルを編集して追加カスタマイズしたい場合、oz-install が作成した libvirt XML ファイルを用いて、oz-customize コマンドを実行できます。例:

# oz-customize -d3 centos64.tdl centos64-libvirt.xml

Oz は libvirt を呼び出して KVM 内でイメージを起動してから、Oz はインスタンスに SSH でログインし、カスタマイズを実行します。

VeeWee

VeeWee は、よく Vagrant ボックスを構築するのに使用されますが、KVM イメージを構築するためにも使用できます。

Packer

Packer は、単一の設定ファイルから複数のプラットフォーム向けのマシンイメージを作成するツールです。

image-bootstrap

image-bootstrap は、ブート可能な仮想マシンイメージを生成するコマンドラインツールです。 Arch、 Debian、 Gentoo、 Ubuntu に対応しており、 OpenStack で利用できるイメージを生成できます。

imagefactory

imagefactory は、さまざまなクラウドプロバイダー向けのイメージの構築、変換、アップロードを自動化するために設計された、比較的新しいツールです。バックエンドとして Oz を使用し、OpenStack ベースのクラウドに対応しています。

KIWI

KIWI OS image builder は、オペレーティングシステムイメージ作成ツールで、 Linux をサポートするハードウェアプラットフォーム向けのイメージや、仮想化システム、クラウドシステム向けのイメージを作成できます。 openSUSE、 SUSE Linux Enterprise、 Red Hat Enterprise Linux ベースのイメージ作成が可能です。 KIWI の使い方は openSUSE Documentation で説明されています

virt-builder

virt-builder は、新規の仮想マシンを素早く作成するためのツールです。ローカルやクラウドで使用するための様々な VM を、普通は数分で作成できます。virt-builder ではこれらの VM をカスタマイズする様々な方法が提供されています。すべてコマンドラインから実行でき、ルート権限が必要なものはないため、簡単に自動化やスクリプト化ができます。

以下のスクリプトを実行し、イメージを構築します。

# virt-builder fedora-23 -o image.qcow2 --format qcow2 \
  --update --selinux-relabel --size 20G

インストール可能なオペレーティングシステムの一覧を表示するには、以下のようにします。

$ virt-builder --list

作成したイメージを virsh で libvirt に取り込みます。

# 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.

To build an image, type this:

# 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 \
  --sources.list-mirror http://ftp.fr.debian.org \
  --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.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.