Skip navigation

前回の投稿では、ESXi のインストールメディアの転送に TFTP を利用しました。

 

ESXi を PXE Boot でインストールしてみる。(dnsmasq)

https://communities.vmware.com/people/gowatana/blog/2019/05/30/esxi-pxe-tftp

 

今回は、ESXi のインストーラの転送を HTTP に変更してみます。

ドキュメントでは、下記のあたりです。

Web サーバを使用した ESXi インストーラの PXE ブート

 

今回の環境。

今回は、前回の投稿で作成した環境を構成変更します。

おもな差分は、赤字の部分です。

  • OS: Oracle Linux 7
  • DHCP / TFTP サーバ: OS 標準提供の dnsmasq RPM
  • syslinux ブートローダ: OS 標準提供の syslinux-tftpboot RPM
  • PXE Boot 対象マシンのファームウェア: BIOS
  • ESXi インストール メディア: HTTP サーバに配置。Apache HTTP Server(httpd)を利用

 

PXE 環境の構成変更。

前回の構成では、ブートローダファイル pxelinux.0 を使用していました。

一方 HTTP でのインストールイメージ転送では、HTTP に対応している gpxelinux.0 を利用します。

そこで、DHCP オプションで指定してるファイル名を変更します。

 

ちなみに、前回利用した  pxelinux.0 のままだと、

下記のように URL を指定した HTTP によるファイルの読み込みができないようです。

esxi-pxeboot-10.png

 

今回は dnsmasq の DHCP 機能を利用しているので、/etc/dnsmasq.conf ファイルを編集します。

  • 赤字部分が前回からの差分です。
  • gpxelinux.0 は、syslinux-tftpboot RPM に含まれています。
  • PXE のプロセスでは TFTP を利用するので、TFTP 関連の設定はそのまま残します。

(省略)

interface=ens33

dhcp-range=192.168.163.200,192.168.163.209,6h

dhcp-boot=gpxelinux.0

enable-tftp

tftp-root=/var/lib/tftpboot

 

dnsmasq のサービスを再起動しておきます。

[root@pxe01 ~]# systemctl restart dnsmasq

 

前回 ESXi の ISO イメージ ファイルの内容をコピーした

TFTP サーバの公開ディレクトリ /var/lib/tftpboot/ESXi67u2/ には、

ブートで必要な下記のファイル(boot.cfg と mboot.c32)を残します。

[root@pxe01 ~]# ls -l /var/lib/tftpboot/ESXi67u2/

合計 96

-r-xr-xr-x. 1 root root  2713  5月 31 07:34 boot.cfg

-r-xr-xr-x. 1 root root 93288  3月 27 13:47 mboot.c32

 

そして boot.cfg の prefix を編集します。

 

編集前(前回のファイル)

[root@pxe01 ~]# cat /var/lib/tftpboot/ESXi67u2/boot.cfg | head -n 4

bootstate=0

title=Loading ESXi installer

timeout=5

prefix=ESXi67u2

 

編集後

※「192.168.163.149」はESXi のインストーラを配置する HTTP サーバのアドレスです。

[root@pxe01 ~]# cat /var/lib/tftpboot/ESXi67u2/boot.cfg | head -n 4

bootstate=0

title=Loading ESXi installer

timeout=5

prefix=http://192.168.163.149/ESXi67u2

 

HTTP サーバの用意。

OS 標準提供の Apache HTTP Server の RPM をインストールして、起動します。

[root@pxe01 ~]# yum install -y httpd

[root@pxe01 ~]# systemctl start httpd

[root@pxe01 ~]# systemctl enable httpd

 

HTTP サーバが起動して、Test Page が参照(HTTP でダウンロード)できるようになります。

※Test Page は Web ブラウザからでも確認できます。

[root@pxe01 ~]# curl -s http://192.168.163.149/ | head -n 3

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

        <head>

                <title>Apache HTTP Server Test Page powered by Linux</title>

 

ESXi インストールメディアの配置。

HTTP サーバの公開ディレクトリ(デフォルトの /var/www/html)配下に

「ESXi67u2」というディレクトリを作成して、そこに ESXi の ISO ファイルの内容をコピーします。

[root@pxe01 ~]# mkdir /var/www/html/ESXi67u2

[root@pxe01 ~]# mount -o loop VMware-VMvisor-Installer-6.7.0.update02-13006603.x86_64.iso /mnt

[root@pxe01 ~]# cp -pr /mnt/* /var/www/html/ESXi67u2/

 

配置したファイルに HTTP 経由でアクセスできることを確認しておきます。

※Web ブラウザからでも確認できます。

[root@pxe01 ~]# curl -s http://192.168.163.149/ESXi67u2/ | head -n 5

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

<html>

<head>

  <title>Index of /ESXi67u2</title>

</head>

 

PXE Boot での ESXi インストーラ起動の様子。

PXE Boot のメニューで、ESXi インストーラを選択すると・・・

esxi-pxeboot-11.png

 

boot.cfg の prefix で指定したアドレスの HTTP サーバから

ファイルが読み込まれていることがわかります。

esxi-pxeboot-12.png

 

PXE Boot を利用するような環境では、RPM などの OS パッケージを配置したリポジトリ

(YUM サーバなど)を用意しているケースがあるかなと思います。

ESXi インストーラも HTTP サーバに配置することで、

PXE 環境と、OS & ESXi のリポジトリを分離して管理できそうです。

 

以上、ESXi インストーラを HTTP サーバに配置してみる話でした。