イメージ作成を自動化するために設計されたツールがいくつかあります。
Diskimage-builder は、さまざまな種類のディストリビューションやアーキテクチャーをサポートする、ディスクイメージの自動作成ツールです。diskimage-builder (DIB) は、Fedora、Red Hat Enterprise Linux、Ubuntu、Debian、CentOS、openSUSE のイメージを作成できます。DIB は、エレメント群に分類されており、エレメントを組み合わせて特定のイメージを作成します。
以下のスクリプトを実行し、イメージを構築します。
# disk-image-create ubuntu vm
この例は、最新リリースの Ubuntu の汎用的なブート可能なイメージを作成します。
環境変数を設定したり、コマンドラインでエレメントを追加で指定することで、さらにカスタマイズできます。
# disk-image-create -a armhf ubuntu vm
この例は、前の例と同じようにイメージを作成しますが、arm アーキテクチャー向けです。様々なエレメントが git ソースディレクトリー と diskimage-builder のドキュメント にあります。
Oz は、仮想マシンイメージファイルの作成手順を自動化するコマンドラインツールです。 Oz は 、KVM とやり取りを行う Python アプリケーションで、仮想マシンのインストール手順を順に行います。サポートするオペレーティングシステム用の事前定義された kickstart (Red Hat 系システム)、preseed ファイル (Debian 系システム) を使用します。Microsoft Windows イメージを作成するためにも使用できます。Fedora の場合、yum を用いて Oz をインストールします。
# yum install oz
注釈
執筆時点で、Ubuntu 用 Oz パッケージはありません。ソースからインストールするか、自分で .deb ファイルをビルドする必要があります。
Oz の詳細は、このドキュメントの範囲を超えていますが、例を挙げておきます。GitHub の rackerjoe/oz-image-build/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-release、cloud-utils、cloud-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 でログインし、カスタマイズを実行します。
VMBuilder (Virtual Machine Builder) は、さまざまなハイパーバイザー向けの仮想マシンイメージを作成するコマンドラインツールです。Ubuntu に同梱されている VMBuilder のバージョンは、Ubuntu 仮想マシンゲストのみを作成できます。Debian に同梱されている VMBuilder のバージョンは、Ubuntu と Debian の仮想マシンゲストを作成できます。
Ubuntu Server Guide には、VMBuilder を使用して Ubuntu イメージを作成する方法が説明されています。
imagefactory は、さまざまなクラウドプロバイダー向けのイメージの構築、変換、アップロードを自動化するために設計された、比較的新しいツールです。バックエンドとして Oz を使用し、OpenStack ベースのクラウドに対応しています。
KIWI OS image builder は、オペレーティングシステムイメージ作成ツールで、 Linux をサポートするハードウェアプラットフォーム向けのイメージや、仮想化システム、クラウドシステム向けのイメージを作成できます。 openSUSE、 SUSE Linux Enterprise、 Red Hat Enterprise Linux ベースのイメージ作成が可能です。 KIWI の使い方は openSUSE Documentation で説明されています
SUSE Studio は、ソフトウェアアプリケーションを Web ブラウザーで構築、テストするための Web アプリケーションです。物理、仮想、クラウドベースのアプリケーションの作成をサポートしています。ディストリビューションとして SUSE Linux Enterprise と openSUSE を使用した OpenStack ベースのクラウド用のイメージを構築できます。
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
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.