OVFTool で vCenter Server Appliance をインストールする

Share on:

Table of contents

概要

vCenter Server Appliance (以下 VCSA) の GUI インストールはステージ1とステージ2に分かれていますが、ステージ1では VCSA の OVA ファイルのインポートが行われています。

今回の記事では GUI/CLI インストーラを使わずに、OVFTool のみを使用して vCenter Server 7.0 Update 3 のインストールを試してみたいと思います。

Open Virtualization Format Tool (ovftool)

インストールのステージ2まで自動実行

良い感じに OVF プロパティなどまとまっている情報がないか調べていたところ、以下の KB2110081 に OVFTool で VCSA をデプロイするコマンドのサンプルがありました。

KB2110081 は 32 ノード以上の vSAN を構成する場合の手順ですが、OVFTool のオプションなどは値を入れ替えればそのまま使えるので拝借しました。

Linux で OVFTool を実行する前提で、整形したりオプションを並べ替えたものが以下です。

 1ovftool --skipManifestCheck --noSSLVerify --allowExtraConfig --acceptAllEulas --powerOn --sourceType=OVA --overwrite \
 2  --X:injectOvfEnv --X:enableHiddenProperties --X:logLevel=verbose --X:logTransferHeaderData --X:waitForIp \
 3  --name=vcsa01_jangari_lab \
 4  --datastore=local-vmfs \
 5  --deploymentOption=tiny \
 6  --diskMode=thin \
 7  --network=Management \
 8  --prop:guestinfo.cis.deployment.autoconfig=True \
 9  --prop:guestinfo.cis.deployment.node.type=embedded \
10  --prop:guestinfo.cis.system.vm0.port=443 \
11  --prop:guestinfo.cis.appliance.net.addr.family=ipv4 \
12  --prop:guestinfo.cis.appliance.net.mode=static \
13  --prop:guestinfo.cis.appliance.net.pnid=vcsa01.jangari.lab \
14  --prop:guestinfo.cis.appliance.net.addr=192.168.0.119 \
15  --prop:guestinfo.cis.appliance.net.prefix=24 \
16  --prop:guestinfo.cis.appliance.net.gateway=192.168.0.1 \
17  --prop:guestinfo.cis.appliance.net.dns.servers=192.168.0.189 \
18  --prop:guestinfo.cis.appliance.ntp.servers=ntp.nict.jp \
19  --prop:guestinfo.cis.appliance.ssh.enabled=True \
20  --prop:guestinfo.cis.appliance.root.passwd=VMware1! \
21  --prop:guestinfo.cis.appliance.root.shell=/bin/appliancesh \
22  --prop:guestinfo.cis.vmdir.site-name=Default-First-Site \
23  --prop:guestinfo.cis.vmdir.domain-name=vsphere.local \
24  --prop:guestinfo.cis.vmdir.password=VMware1! \
25  --prop:guestinfo.cis.vmdir.first-instance=True \
26  --prop:guestinfo.cis.ceip_enabled=True \
27  /media/vcsa/VMware-vCenter-Server-Appliance-7.0.3.00200-18901211_OVF10.ova \
28  vi://root:VMware1\!@esxi-01.tanzu.local:443/

上述のコマンドを実行すると CLI インストーラと同様に、vCenter Server のインストールのステージ2まで実行されます。

基本的に3行目(--name)以降のオプションを必要に応じて編集すれば OK です。VCSA の OVA ファイルや OVFTool のバイナリはインストール CD の ISO イメージの /vcsa 配下に含まれています。

多くのオプションは名称から何のパラメータか分かるので省略しますが、いくつかのオプションについて補足します。

--X:injectOvfEnv と --powerOn

-X:injectOvfEnv は OVFTool で ESXi をターゲットとして仮想マシンをデプロイする際に OVF プロパティを注入するためのオプションです。

vCenter Server からデプロイした場合、デプロイ時に指定する OVF プロパティは vApp オプションとしてデータベース内に永続化されます。しかし、ESXi は OVF プロパティを永続化する機能がありません。このため、OVFTool で ESXi をターゲットとして仮想マシンをデプロイする場合、--X:injectOvfEnv と --powerOn を付与してパワーオンと同時に OVF プロパティを注入させる必要があります。

なお、--X:injectOvfEnv は --powerOn と併用することで機能するオプションです。どちらかのオプションが欠けた状態で ESXi に仮想マシンをデプロイすると OVF プロパティは注入されずゲストからも認識されません。

--prop:guestinfo.cis.deployment.autoconfig

guestinfo.cis.deployment.autoconfig は vCenter Server Appliance のインストールでステージ2を自動で実行するかどうかを指定する OVF パラメータです。

VC 7.0 U3 の OVA から .ovf ファイルを抽出して開くと当該パラメータは以下のようになっています。

1      <Property ovf:key="guestinfo.cis.deployment.autoconfig" ovf:type="boolean" ovf:userConfigurable="false" ovf:value="False">
2        <Label>Auto Start Services</Label>
3        <Description>If this parameter is set to True, the appliance will be configured after deployment using the specified OVF configuration parameters. If set to False, the appliance should be configured post-deployment using the VMware Appliance Management Interface.</Description>
4      </Property>

本プロパティのデフォルト値は False です。CLI インストーラは本パラメータを True としてデプロイするためステージ2まで一括で実行されます。また、vSphere Client や Host Client での OVA のデプロイではユーザーが設定できる OVF プロパティとして表示されません。

インストールのステージ2開始前の状態で中断

以下のように guestinfo.cis.deployment.autoconfig を False とすればステージ2の開始前でインストールを中断できます。

 1ovftool --skipManifestCheck --noSSLVerify --allowExtraConfig --acceptAllEulas --powerOn --sourceType=OVA --overwrite \
 2  --X:injectOvfEnv --X:enableHiddenProperties --X:logLevel=verbose --X:logTransferHeaderData --X:waitForIp \
 3  --name=vcsa01_jangari_lab \
 4  --datastore=local-vmfs \
 5  --deploymentOption=tiny \
 6  --diskMode=thin \
 7  --network=Management \
 8  --prop:guestinfo.cis.deployment.autoconfig=False \
 9  --prop:guestinfo.cis.deployment.node.type=embedded \
10  --prop:guestinfo.cis.system.vm0.port=443 \
11  --prop:guestinfo.cis.appliance.net.addr.family=ipv4 \
12  --prop:guestinfo.cis.appliance.net.mode=static \
13  --prop:guestinfo.cis.appliance.net.pnid=vcsa01.jangari.lab \
14  --prop:guestinfo.cis.appliance.net.addr=192.168.0.119 \
15  --prop:guestinfo.cis.appliance.net.prefix=24 \
16  --prop:guestinfo.cis.appliance.net.gateway=192.168.0.1 \
17  --prop:guestinfo.cis.appliance.net.dns.servers=192.168.0.189 \
18  --prop:guestinfo.cis.appliance.ntp.servers=ntp.nict.jp \
19  --prop:guestinfo.cis.appliance.ssh.enabled=True \
20  --prop:guestinfo.cis.appliance.root.passwd=VMware1! \
21  --prop:guestinfo.cis.appliance.root.shell=/bin/appliancesh \
22  --prop:guestinfo.cis.ceip_enabled=True \
23  /media/vcsa/VMware-vCenter-Server-Appliance-7.0.3.00200-18901211_OVF10.ova \
24  vi://root:VMware1\!@esxi-01.tanzu.local:443/

なお、vCenter SSO 関連の OVF プロパティはステージ2の開始前では不要なのでオプションを削除しています。

OVA をデプロイした(=ステージ1が完了した)後は、ブラウザから VAMI の URL (https://<vCenter Server FQDN>:5480/) にアクセスすることでステージ2を開始できます。

おわりに

今回の記事では OVFTool を使用して vCenter Server Appliance のインストールを行ってみました。

これ単体ではステージ1で中断できる点のほかに通常の CLI インストールとは大差ありませんが、例えば VCSA の REST API を組み合わせることでファイルベースバックアップを自動で行うといったことも可能になります。次回の記事では OVFTool と REST API を使用して、GUI を介さずにファイルベースバックアップを行ってみる予定です。

01/09 追記: インストールの進行状況の確認

インストールの進行状況は /rest/vcenter/deployment に HTTP GET を発行すると JSON として取得できます。

 1VCSA_HOSTNAME=vcsa01.jangari.lab
 2VCSA_USERNAME=root
 3VCSA_PASSWORD=VMware1!
 4curl -k -X GET -H "Authorization: Basic $(echo -n "${VCSA_USERNAME}:${VCSA_PASSWORD}" | base64)" https://${VCSA_HOSTNAME}:5480/rest/vcenter/deployment | jq
 5{
 6  "state": "INITIALIZED",
 7  "progress": {
 8    "total": 1,
 9    "completed": 1,
10    "message": {
11      "id": "com.vmware.vcenter.deploy.task.complete.success",
12      "default_message": "Task has completed successfully.",
13      "args": []
14    }
15  },
16  ...

ステージ1が進行中の場合は state の値が NOT_INITIALIZED、完了すると INITIALIZED になります。以下も参考に。