vHoge

VMwareのアレコレ備忘録。CLIでがんばるネタ多め。

AutoDeploy を試す(ESXi を boot させるまで)

とある検証で AutoDeploy が必要になったものの、そういえば触ったことが無いなということで、今更ながら AutoDeploy 環境の構築メモ。

vSphere AutoDeploy とは

AutoDeploy とは物理ホストに対し ESXi イメージをプロビジョニングし、ESXi のインストールや設定投入の集中管理を行うことができるコンポーネント
各物理ホストは PXE boot にて ESXi が起動しそのままステートレスホストとして運用することや、ホストプロファイルを適用しステートフルホストとしてブートディスクへのインストールして運用することが可能で、またホスト名や IP アドレスなどのホスト毎の設定をホストプロファイルのカスタマイズ値より投入することができる。 docs.vmware.com

必要なコンポーネント

AutoDeploy を利用するにはサーバとして以下が必要。

  • vCenter Server
    • AutoDeploy サービスを有効化
  • DHCP サーバ(*)
  • TFTP サーバ (*)

(*)ラボ環境には dnsmasq があるので、今回はコレの DHCP/TFTP を有効化し兼任。

これとは別に以下のファイルも準備しておく。

  • ESXi イメージ(オフラインバンドル)
  • AutoDeploy PXE ブート用イメージ
    • vCenter からダウンロードできる

AutoDeploy サービスの有効化

デフォルトでは AutoDeploy サービスは起動していないので有効化する必要がある。
といっても、メニューから AutoDeploy 画面をひらいてボタンを押すだけ。

とりあえず上記が出れば有効化は OK。

VAMI のサービスから見ると下記のサービス(AutoDeploy/ImageBuilder)。
VAMI でサービス有効無効を切り替えてもよい。

dnsmasq で DHCP/TFTP を立てる

まず TFTP の root フォルダを作成し、AutoDeploy の PXE イメージを設置しておく。
PXE イメージは AutoDeploy 画面の設定より以下のリンクからダウンロードができる。
ブラウザでダウンロードして設置でも良いが、PXE イメージのダウンロードは認証が不要なのでサーバから直接ダウンロードする方が手っ取り早いかも。

$ mkdir -p /var/lib/tftp
$ cd /var/lib/tftp
$ wget https://【vCSA の FQDN or IP】:6501/vmw/rbd/deploy-tftp.zip --no-check-certificate

ダウンロードした zip は展開しておく。

$ unzip deploy-tftp.zip
$ ls -1
deploy-tftp.zip
snponly64.efi
snponly64.efi.officialkey
snponly64.efi.testkey
snponly64.efi.vmw-hardwired
snponly64.efi.vmw-hardwired.officialkey
snponly64.efi.vmw-hardwired.testkey
tramp
u[f:id:masahiroirie:20240920002833p:plain]ndionly.0
undionly.kpxe
undionly.kpxe.debug
undionly.kpxe.debugmore
undionly.kpxe.nomcast
undionly.kpxe.vmw-hardwired
undionly.kpxe.vmw-hardwired-nomcast

dnsmasq.conf の設定を書き換え、DHCP/TFTP を有効化し PXE boot の設定をする。

# DHCP 周りの設定
dhcp-range=192.168.100.240,192.168.100.254,12h
dhcp-option=option:router,192.168.100.1
dhcp-option=option:netmask,255.255.255.0
dhcp-option=option:dns-server,192.168.100.2
dhcp-option=option:ntp-server,192.168.100.2

# TFTP の設定
enable-tftp
tftp-root=/var/lib/tftp

# PXE boot の設定
dhcp-boot=snponly64.efi.vmw-hardwired

dhcp-boot の指定はホストが EFI なら snponly64.efi.vmw-hardwired、BIOS なら undionly.kpxe.vmw-hardwired ファイルの TFTP root からのファイルパスを指定しておく。

docs.vmware.com

ソフトウェアデポ登録

再び vSphere Client にて AutoDeploy 画面。
プロビジョニングする ESXi イメージのソフトウェアデポを登録する。
オンラインデポがあればそれを指定しそのまま利用することが可能、無ければダウンロードやカスタマイズしたオフラインバンドルをインポートすることもできる。
インポートが完了するとオフラインバンドルに含まれているイメージプロファイルやソフトウェアパッケージ(VIB)が確認できる。 この画面でさらに VIB を追加したりなどのカスタマイズを行うことも可能っぽい。

デプロイルール登録

プロビジョニング対象のホストや利用するソフトウェアデポ、ホストプロファイル、実行するカスタムスクリプトなどのデプロイルールを作成する。
デプロイルールタブより新しいデプロイルールを作成する。 デプロイルール名とルール適用ホストの指定。 適用ホストはホスト名や IP、Mac アドレスなどで指定ができる。 デプロイルールに含めるアイテムの指定。
今回は一旦ホストの場所とイメージプロファイルのみを指定する。 プロビジョニングしたホストをどこのクラスタに登録するかの指定。 適用する ESXi のイメージプロファイルの指定。 さきほどのソフトウェアデポに含まれているイメージプロファイルを指定する。 設定の確認を行い、完了する。 デプロイルールが作成されるがデフォルトでは無効になっているので有効化する。 対象のルールにチェックを入れて有効化。 これで登録完了。

ホストを PXE ブートしてみる。

これで対象ホストをネットワークブートすると ESXi があがってくる…はず。
Nested 機で試してみる。EFI から Network Boot を選択。 それっぽい画面… ESXi の boot 画面が上がってくる。見慣れない Load モジュールパス… boot 完了。ただし IP は DHCP での割り当て。 vCenter にも自動で登録される。

ESXi は boot したが

ただし現時点だとステートレスホストであがってくるためローカルデータストアは持っておらず、オンメモリディスク状態のため再起動するとログやファイルなどは全て消える。
また、IP アドレスも DHCP 割り当てでサーバとして運用するにはちと厳しい状態。

この後、リファレンスホストとしてホストプロファイル設定・抽出・添付していくことで各ホスト毎の設定を投入し、ステートフルホストとして構築を行っていくがそれはまた後日。。。