このエントリーをはてなブックマークに追加

2.1.1. oz

2.1.1.1. 概要

ozはaeousprojectの一部でOSの仮想イメージを自動的にインストールするツールです。
キックスタート、SIF 、Preseedを利用したものなので既存のツールのラッパーという感じです。
しかし、対応OSは最新のものは無くても結構多いため重宝しそうです。
KVMが動作する環境で確認しています。
KVMが動作しなくても問題はないはずですがブリッジインターフェースは必要になります。
OpenStackで利用する仮想マシンイメージのベースを作成する際にも便利です。
イメージ作成の本家での説明は、 Oz-examples です。
Fedora向けに開発されているみたいですがUbuntuでもソースからインストールすれば動きます。
UbuntuでOpenStackに登録してインスタンスが稼働するところまでは確認しています。

2.1.1.2. インストール

Aeolusはのソースからインストールします。
マスターのまま利用したほうが対応OSも多いかもしれません。
その場合は下記のチェックアウトはしなくてよいです。
$ sudo apt-get update
$ sudo apt-get install -y gcc git gvncviewer python-guestfs python-libxml2 \
                          python-libvirt libvirt-bin python-pycurl genisoimage \
                          python-numpy mtools python-m2crypto python-parted \
                          libguestfs-tools
$ cd /usr/local/src
$ sudo git clone https://github.com/clalancette/oz.git
$ cd oz ; sudo git checkout -b v0.10.0 refs/tags/v0.10.0
$ sudo python setup.py install
$ sudo mkdir /etc/oz

2.1.1.3. コンフィグ

何も設定しなくても動作するのであれば特に行う必要はありません。
ただし、ブリッジの設定を記述していますのでOS側も設定しておく必要があります。
OzException: No disk activity in 300 seconds, failing
上記みたいなエラーが出る場合はサーバが利用しているブリッジインターフェースを設定しましょう。
$ sudo vi /etc/oz/oz.cfg
[paths]
output_dir = /var/lib/libvirt/images
data_dir = /var/lib/oz
screenshot_dir = .

[libvirt]
uri = qemu:///system
# type = kvm
bridge_name = virbr0
bridge_name = br100

#[cache]
#original_media = yes
#modified_media = no
#jeos = no

2.1.1.4. コマンド

4つのコマンドが利用可能です。

2.1.1.4.1. oz-cleanup-cache

ozが利用するディレクトリにあるキャッシュを削除します。
イメージ作成時に利用するISOなどです。
オプションなどはありません。

2.1.1.4.1.1. 書式

oz-cleanup-cache

2.1.1.4.1.2. オプション

特にありません。

削除対象のディレクトリは以下です。

  1. /var/lib/oz/floppies
  2. /var/lib/oz/floppycontent
  3. /var/lib/oz/icicletmp
  4. /var/lib/oz/isocontent
  5. /var/lib/oz/isos
  6. /var/lib/oz/jeos
  7. /var/lib/oz/kernels
  8. /var/lib/oz/screenshots

2.1.1.4.2. oz-generate-icicle

ディスクイメージからパッケージのマニフェストを作成します。
oz-installで利用できます。

2.1.1.4.2.1. 書式

oz-generate-icicle [OPTIONS] <tdl> <libvirt_xml_file>

2.1.1.4.2.2. オプション

オプション 概要
-c <config> Get config from <config> (default is /etc/oz/oz.cfg)
-d <level>
Turn up logging level. The levels are:
0 - errors only (this is the default) 1 - errors and warnings 2 - errors, warnings, and information 3 - all messages 4 - all messages, prepended with the level and classname
-h Print this help message
-i <icicle> Write the ICICLE to <icicle>

2.1.1.4.3. oz-customize

作成したイメージをカスタマイズするコマンドです。

2.1.1.4.3.1. 書式

oz-customize [OPTIONS] <tdl> <libvirt-xml-file>

2.1.1.4.3.2. オプション

オプション 概要
-c <config> Get config from <config> (default is /etc/oz/oz.cfg)
-d <level>
Turn up logging level. The levels are:
0 - errors only (this is the default) 1 - errors and warnings 2 - errors, warnings, and information 3 - all messages 4 - all messages, prepended with the level and classname
-h Print this help message

2.1.1.4.4. oz-install

イメージの作成するコマンドです。
コマンド実行例では作成するOS毎に記述しています。

2.1.1.4.4.1. 書式

oz-install [OPTIONS] <tdl>

2.1.1.4.4.2. オプション

オプション 概要
-a <auto> Use the guest configuration tool from <auto> instead of using the hard-coded one. This is useful if you want to pass a custom kickstart/preseed/sif/etc for installation
-c <config> Get config from <config> (default is /etc/oz/oz.cfg)
-d <level>
Turn up logging level. The levels are:
0 - errors only (this is the default) 1 - errors and warnings 2 - errors, warnings, and information 3 - all messages 4 - all messages, prepended with the level and classname
-f Force download of installation media even if already cached
-g Generate the ICICLE after installation
-h Print this help message
-i <icicle> Write the ICICLE to <icicle> (only valid with -g)
-p Cleanup old guests with the same name before installation
-s <disk> Write the output to <disk> (default is the TDL name tag)
-t <timeout> Wait <timeout> seconds for installation, rather than the default
-u After installation, do the customization
-x <xmlfile> Write libvirt XML to <xmlfile>

2.1.1.4.4.3. コマンド実行例

OS(ディストリビューション)別に記述します。
OpenStackで利用するところまで記述しています。
イメージ作成後にKVMで利用する場合はコマンド実施を行ったディレクトリにXMLが作成されていますので``virsh define`` で登録すればそのままKVMで使えます。
またそのXML内のポートに``telnet localhost ポート番号`` とすればtelnetで仮想マシンにログインできます。
DHCPでIPアドレスがわからない場合は便利だと思います。