Guest OS Customization for CentOS 7.0
まとめ
vCenter Server 6.0 で CentOS 7.0 の仮想マシンをクローンする際に Customization するには、perl, open-vm-tools そして packages.vmware.com にある open-vm-tools-deploypkg が必要。
- VMware の yum リポジトリを追加
- VMware の GPG Key をインポート
- perl, open-vm-tools, open-vm-tools-deploypkg をインストール
はじめに
最近 CentOS 7.0 を使い始め systemd, firewalld, NetworkManager などにようやく慣れ始めました。そこで、本格的に使い始めようと無邪気に仮想マシンのクローンを実施したところ それなりに嵌まり無駄な時間を費やしたために備忘録を記録します。
vSphere の対応 Guest OS と Customization
Windows や RHEL などメジャーな OS を利用している人は意識しないかも知れませんが、vSphere が対応する Guest OS と、クローンと同時にホスト名や IP アドレスなどを変更する Customzation を行える Guest OS の種類は一致していません。Guest OS のサポートのレベルは以下のような順序を辿ります。
Experimental > Supported > Customization Supported > Deplicated
Supported になったからといって Customization が出来るわけではありません。imgcust という職人的なスクリプトを仮想マシン クローン後に埋め込んで初めて Customization が実現されます。
Windows の vCenter Server であれば
> C:¥Program Files\VMware\vCenter Server\vpxd\imgcust\
Linux Alliance の vCenter Server であれば
> /usr/lib/vmware-vpx/imgcust
配下でその中身を確認することが出来ます。
Supported の Guest OS は VMware Compatibility Guide から確認することができます。しかし、VMware Compatibility Guide では、その Guest OS が Customization 可能かどうかは分かりません。では、どこで Customization の対応を確認できるのでしょうか ?
Customization の対応表は KB2378666 Guest operating systems that are supported for use with Guest Customization から辿れる PDF Guest OS Customization Support Matrix から確認することができます。vSphere 6.0 のリリースに合わせてアップデートされ、CentOS 7.x の他にも、最近の Ubuntu も Customization に対応してきています。なお、vCloud Director や vCloud Air での Guest Customization、vCenter Site Recovery Manager での IP Customization は別の仕組みで実装されているため、サポート Guest OS も異なっていますので、各マニュアルを参照して下さい。
Experimental な Guest OS として、vSphere ESXi があります。さりげなく仮想マシン前提の vmxnet3 が vSphere 5.1 から混入していたり、vSphere 6.0 では VMware Tools が標準で仕込まれていたりと、検証で Nested ESXi 環境を使う物にはありがたいかぎりです。
Supported だが Customization がサポートされていない Guest OS として、FreeBSD、Oracle Solaris などがあります。いずれも VMware Tools がありますが、Customization できるまでには至っていません。
CentOS 7.0 と VMware Tools と open-vm-tools
最近のディストリビューションには Open Source 実装の VMware Tools の Open Source 実装である open-vm-tools が含まれています。VMware Compatibility Guide でも確認できますが、最近の OS では open-vm-tools が recommended となっています。これは以下の KB で確認することができます。
VMware support of open-vm-tools
open-vm-tools に対する VMware のサポートについて
ESXi のインストール イメージの約半分を VMware Tools のバイナリが締めるようになってしまったので、ちょうど良いのかも知れません。
CentOS 7.0 の Customization に必要な仕込み
基本的に VMware のサイト Home > Compatibility Guides > Guest Operating System Installation Guide > CentOS 7 に従います。
perl の追加
CentOS 7.0 はデフォルトが Minimal Install であり、本当に最小限のパッケージしかインストールされません。Customization に致命的なのですが perl も入りません。実は Customization に使われる imgcust のスクリプトは perl で作成されているため、perl が必須となります。yum で perl を追加します。
# yum -y install perl
VMware リポジトリの GPG Key をインポート
また、内部では open-vm-tools-deploypkg に含まれるモジュールを利用しているため、こちらも必須となります。open-vm-tools-deploypkg は VMware Operating System Specific Packages (OSPs) から入手できる rpm を利用します。
VMware の yum リポジトリから取得する rpm に対応するため、以下のように GPG Key をインポートします。
# rpm --import http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub
# rpm --import http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-DSA-KEY.pub
VMware リポジトリの追加
次に、VMware の yum リポジトリを追加します。
cat << EOF > /etc/yum.repo.d/VMware-Tools.repo
[vmware-tools]
name = VMware Tools
baseurl = http://packages.vmware.com/packages/rhel7/x86_64/
enabled = 1
gpgcheck = 1
EOF
リポジトリファイルの拡張子 repo を忘れないように。*.repo となっていない場合、yum がリポジトリとして認識しません。
open-vm-tools, open-vm-tools-deploypkg を追加
# yum -y install open-vm-tools
# yum -y install open-vm-tools-deploypkg
# systemctl start vmtoolsd
# systemctl status vmtoolsd
vSphere Web Client でのエラー
上述の仕込みが足りない場合、クローンのタスクは成功したように見えますが、Customization が実行されません。クローンはクローン元の仮想マシンに対するタスク/イベントで、Customization はクローンした後の仮想マシンのタスク/イベントとなるためです。
なかなか確認する機会がないかもしれませんが、イベントには以下のように記録されています。問い合わせがあまりにも多かったのか KB まで紹介してくれる VMware にしては珍しい親切さです。
open-vm-tools がインストールされていない場合
ゲストOS「centos64Guest」のカスタマイズは、この構成ではサポートされていません。論理ボリューム マネージャをもつ Microsoft Vista (TM) と Linux ゲストは、最新の ESX ホストおよび VMware Tools バージョンでのみサポートされています。サポート対象の構成については、vCenter のドキュメントを参照してください。
open-vm-tools-deploypkg がインストールされていない場合
仮想マシン 〜 のカスタマイズ中にエラーが発生しました。詳細はゲスト OS のログファイル 〜 を参照してください。
チート
黙って以下のスクリプトを実行
#!/bin/bash
yum -y install wget
rpm --import http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub
rpm --import http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-DSA-KEY.pub
cat << EOF > /etc/yum.repos.d/VMware-Tools.repo
[vmware-tools]
name = VMware Tools
baseurl = http://packages.vmware.com/packages/rhel7/x86_64/
enabled = 1
gpgcheck = 1
EOF
yum -y install perl
yum -y install open-vm-tools
yum -y install open-vm-tools-deploypkg
systemctl start vmtoolsd