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



  • 前回の投稿では、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

    http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

           

                    Apache HTTP Server Test Page powered by Linux

     

    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

      Index of /ESXi67u2

     

    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 サーバに配置してみる話でした。



    https://communities.vmware.com/people/gowatana/blog/2019/06/01/esxi-pxe-http

Log in to reply
 

© Lightnetics 2024