今回は、virt-installコマンドで仮想マシンを作成する部分、そして、KickStartでゲストOSをインストールする部分について自動化を行います。

 Linux KVMの環境で新規の仮想マシンを作成する場合、virt-managerなどのGUIツールを利用できます。しかしながら、GUIツールは自動化には適しません。自動化のためには、コマンドやAPIを利用する必要があります。RHEL6.4では、コマンドで仮想マシンを作成する場合、virt-installコマンドが利用できます。

 例えば、前回用意したホストLinuxのデスクトップでコマンド端末を開き、次のコマンドを実行します。vm01という名前の仮想マシンが作成された後に、仮想マシンのコンソール画面が開いて、RHEL6.4のインストーラーが起動します。

# virt-install --name vm01 \ 
    --vcpus 2 --ram 1024 \ 
    --disk path=/var/lib/libvirt/images/vm01.img,size=16,sparse=false \ 
    --network network:default \ 
    --graphics vnc \ 
    --os-variant rhel6 --location http://192.168.122.1/iso/rhel64 
このマークで改行
(「\」は、コマンドの途中で改行する際に入力する記号)

 それぞれのオプションの意味は、manページに詳しく記載されていますので、そちらを確認してください。ここで、特にポイントになるのが、ゲストOSをインストールする大元のリポジトリーを指定する「--location」オプションです。

 ここでは、インストールメディアの内容をホストLinuxのWebサーバーで公開したものを利用しています。さまざまなバージョンのインストールメディアを公開しておくことで、任意のバージョンのRHELを自由にインストールできます。これには、外部のWebサーバーも利用可能です。

 ただし、インストーラーでの設定作業は手動で行う必要がありますので、これだけでは自動化されたことにはなりません。そこで、インストール作業も自動化するために、KickStartを利用します。これは、インストーラーで指定する個々の項目をテキストの設定ファイルに事前に記載しておくことで、RHELのインストール処理を自動化する仕組みです。

 以下は、virt-installコマンドに、KickStartを組み合わせて実行する例です。

# virt-install --name vm01 \ 
    --vcpus 2 --ram 1024 \ 
    --disk path=/var/lib/libvirt/images/vm01.img,size=16,sparse=false \ 
    --network network:default \ 
    --graphics vnc \ 
    --os-variant rhel6 --location http://192.168.122.1/iso/rhel64 \ 
    --noautoconsole \ 
    --extra-args="ks=http://192.168.122.1/ks/ks.cfg" 

 最後の「--extra-args」オプションで、KickStartの設定ファイル「ks.cfg」の入手先を指定します。ここでは、ホストLinuxのWebサーバーで設定ファイルを公開しておき、そこから入手するようにしています。また、KickStartで自動インストールする場合は、仮想マシンのコンソールを開く必要はありませんので、「--noautoconsole」オプションで、コンソールを開かないようにしています。これを指定した場合、virt-installコマンドの実行はすぐに完了し、バックグラウンドで仮想マシンの自動インストールが行われます。