はじめに #
ESXiのinstall/updateの検証は物理サーバーの再起動を伴うため、気軽にできなかったり再起動に10-20分かかり非常に面倒です。
今回はNested ESXiを使った検証コスト削減手法を解説したいと思います。
今回targetにする「検証」とは、install/updateによるvibパッケージの変化やinstall時にエラーが出ないかになります。
新しいversionでのESXiの挙動(VMの稼働に問題ないか等)や、物理サーバー依存の問題はチェックできませんので注意です。
1. Nested ESXiとは? #
Nested ESXiとは、物理ESXiの上にVMとしてESXiを構築することを指し入れ子構造になるのでNestedと呼ばれています。
この利点として「VMなので」
- 大量展開が可能
- snapshotを使ったESXiの状態保持が可能
- powerON/OFFが高速
があります。これが検証という繰り返し作業が多い内容に非常に効果的です。
2. Nested ESXiのdeploy #
Nested ESXiには、VMwareの超有名エンジニアのwilliamlamさんが作っている、「Nested ESXi Virtual Appliance」がとにかく簡単に作れるのでこれを使います。
今まではwilliamlamさんのblogで公開されていましたが、今はVMware Flingsに移動されたようです。
1. broadcomアカウントを作成する
VMware製品を使っていう人は、broadcomアカウントに移行済み or 作成済みだと思うので特に問題はないと思います。
2. FlingsからVirtual Applianceをダウンロード
VMware Flingsにアクセスすれば、常にTOP10には表示されているのですぐ見つかると思います。 自分の欲しいESXiのversionをdownloadしましょう。
3. portgroupの作成
Nested ESXiに使用するportgroupにはportgroupのセキュリティー設定を3つとも許可にしておきます。
3つのセキュリティ設定はざっくりいうと「vnicと異なるmacaddressの通信を許可するか」です。 Nested ESXiではvnicのmac-addressがvmnicに付与されますが、vmkernelのmac-addressはvSphereが自動生成したものを利用します。
結果としてvnicと異なるmac-addressで通信することになるので、セキュリティー設定が拒否のままだと、通信がdropされてしまい疎通不可になります。
4. ovaをdeploy
ovaのdeploy時にESXiのipやpassword等も設定します。
項目 | 説明 |
---|---|
VLAN ID | 物理ESXi側のPGでvlanを解決する場合は空欄 Nested ESXi内部でvlanを解決する場合はmanagement-ipに使用するvlanを入力 |
VMFS | チェックを入れるとNested ESXiのlocal-diskから、datastoreを自動生成する 便利なのでTrueがおすすめ |
Syslog | 使わないならば空欄でOK |
vlanをどちらで解決するか?
- 通常VMにはvlanを設定したPGを付与することで、仮想SWでvlanの解決をしてguestOSではvlanの設定をしないことがほとんどです。
- しかしNested ESXiの場合は内部でもvlanを使い分けたいことがあります。(他のvmkernel用、Nested ESXi上にVMを建てたいなど…)
- そこでNested ESXiにはトランクポートのPGを付与することで、vlanの解決をNested ESXiの仮想SW側で実施することができます。
ansibleでもdeployできます。
- name: Deploy nested esxi
community.vmware.vmware_deploy_ovf:
hostname: "{{ vcenter_network.ip }}"
username: "{{ vcenter_creds.user }}"
password: "{{ vcenter_creds.password }}"
datacenter: Datacenter
validate_certs: false
name: "{{ inventory_hostname }}"
cluster: p_cluster
datastore: nvme
networks:
"VM Network": "{{ portgroup }}"
disk_provisioning: "thin"
power_on: true
wait_for_ip_address: true
ovf: "Nested_ESXi8.0u1a_Appliance_Template_v1.ova"
inject_ovf_env: true
properties:
guestinfo.hostname: "{{ esxi_network.fqdn }}"
guestinfo.ipaddress: "{{ esxi_network.ip }}"
guestinfo.netmask: "{{ esxi_network.mask }}"
guestinfo.gateway: "{{ gateway }}"
#guestinfo.vlan: ""
guestinfo.dns: "{{ dns }}"
guestinfo.domain: "{{ domain }}"
guestinfo.ntp: "{{ ntp }}"
guestinfo.password: "***"
delegate_to: localhost
5. HostClientを確認する
HostClientにloginできれば、Nested ESXiの構築は完了です。
3. 検証の高速化 #
snapshotを使う #
Nested ESXiならではの利点はやはりsnapshotです。ESXiの設定変更前にsnapshotをとっておくことで即座に切り戻しが可能になります。
例えばprofile install/updateの違いを解説した記事では、以下のように実施していました。
- snapshotを取得
esxcli software profile install
を実施esxcli software vib list
でinstall後のvibパッケージ確認- snapshotから切り戻し
esxcli software profile update
を実施esxcli software vib list
でupdate後のvibパッケージ確認- profile install/updateによる差分をcheck
他にも様々な設定を一旦Nested ESXiで試す → 即座に切り戻しができるようになるのでかなり活用の幅が広いです。
任意のESXiイメージを使う #
Nested ESXiで利用されているのはVMware純正のESXiイメージですが、ベンダーイメージを使って検証したい場合があるかもしれません。
その場合はNested ESXiにvCenterから任意のESXiのISOをマウントしてクリーンインストールしましょう。これによって「Nested ESXi Virtual Appliance」のESXiを構築するときに必要なカスタマイズを全て設定してくれた状態を保ちつつ好きなESXiイメージを使用することができます。