ESXi6.5を大量構築する必要があったので、いや工数を削減する為に用意した環境のメモです。 (実際の現場では以下の様な手順とチェックシートを書き記して投げつけただけで作業は後輩にやらせた)
目指す環境
- ESXi6.5をUEFIブート環境のマシンにインストールする。
- いくつかあるNICのうち、1つをインストール用に使う。割り当てられたMACアドレスとクライアントを紐づけて、管理IPアドレスを採番する
前提条件
PXEサーバ
自動インストールを行うためには以下機能を持つサーバ(PXEサーバ)が必要。
OS情報
インストールする機能
- DHCPサーバ(dhcpd)
- TFTPサーバ(tftpd(xinetd))
- WEBサーバ(httpd)
その他必要なもの
- ESXi6.5のISOイメージ(カスタムバンドル版を利用する場合はそちらを用意する)
クライアント(ESXiのインストール対象)
確認事項は以下の通り
- PXEBootが有効になっていること
- 管理セグメントに接続するポートのMACアドレスを確認すること(ESXiのインストール時、物理マシンとホスト名を紐づける際に必要)
ネットワーク
PXEサーバとインストールするサーバに対して接続可能なネットワークが必要
処理フロー
- サーバの電源をONにすると、PXEbootによってDHCPクライアントが起動する
- DHCPサーバからIPアドレスとmboot.efiファイルが送信される。(mboot.efiファイルのパスはxinetd/tftp内に記載されたchrootディレクトリに従う。)
- PXEサーバは、PXEクライアントのMACアドレスに対応するboot.cfgファイルをmbboot.cfgファイルが格納されたディレクトリから探す。(
/var/lib/tftpboot/images/ESXiv6.5/01-{MACアドレス}/boot.cfg
というフォルダを探し、なければ/var/lib/tftpboot/images/ESXiv6.5/boot.cfg
を探す) - `boot.cfgファイルに記載されたクライアント固有のURLより、キックスタートファイルを読み込む
- キックスタートファイルに従ってESXiインストーラは自動でインストール及び設定を行い、完了する
PXEサーバ構成
-
WEBサーバ設定ファイル /etc/httpd/conf/httpd.conf > 基本はデフォルトのまま編集しない
-
TFTPサーバ設定ファイル /etc/tftp/tftpd.config
-
DHCPサーバ設定ファイル /etc/dhcp/dhcpd.conf
-
PXEインストール用関連ディレクトリ /var/lib/tftpboot/
-
ESXi6.5のイメージ /var/lib/tftpboot/images/ESXiv6.5/
-
PXE設定ファイル格納先 /var/lib/tftpboot/pxeboot.cfg/01-{クライアントのMACアドレス} ※クライアント毎に設定ファイルを作成する
-
bootファイル格納先 /var/lib/tftpboot/images/ESXiv6.5/01-{クライアントのMACアドレス}/boot.cfg
-
キックスタートファイル格納先ディレクトリ /var/www/html/01-{クライアントのMACアドレス}.cfg > httpdのデフォルトドキュメントルート内に格納する
PXEサーバ構築手順
パッケージのインストール
yum -y install httpd syslinux tftp-server tftp dhcp
TFTPサーバの設定
- 設定ファイルを編集する。
disable = yes から disable = no に変更する server_args の値は重要なので確認しておくこと。
vi /etc/xinetd.d/tftp # default: off # description: The tftp server serves files using the trivial file transfer # protocol. The tftp protocol is often used to boot diskless # workstations, download configuration files to network-aware printers, # and to start the installation process for some operating systems. service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -v -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
-
tftpサーバをxinetd経由で起動させる。(再起動してリロード)
systemctl restart xinetd
WEBサーバの設定
-
ホスト名を変更する
hostnamectl set-hostname {hostname}
-
設定ファイルを編集する
vi /etc/httpd/conf/httpd.conf ServerName {hostname} #AddDefaultCharset UTF-8 ←コメントアウト
-
サービスを再起動する
systemctl restart httpd
###DHCPサーバの設定 ※予め払い出すIPアドレスのレンジを確認しておくこと。
- 設定ファイルの編集
- option domain-name
- subnetディレクティブ
- rangeディレクティブ内のIPアドレスレンジ
- routers デフォルトゲートウェイがある場合は記入
vi /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # option domain-name "nuage2dev.local"; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; subnet 192.168.0.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.0.100 192.168.0.128; option broadcast-address 192.168.0.255; option routers 192.168.0.1; option subnet-mask 255.255.255.0; filename "images/ESXiv6.5/mboot.efi"; #後の手順で作成&配置 }
ESXiサーバイメージコピー
ESXiのisoメディアをOSにマウント
sudo mount -o ro -t iso9660 /dev/cdrom /mnt
メディアイメージの配置場所を作成
mkdir -p /var/lib/tftpboot/images/ESXiv6.5
メディアをコピー
cp -R /mnt/* /var/lib/tftpboot/images/ESXiv6.5
メディアをアンマウント
umount /dev/cdrom
ESXiサーバ イメージ設定
bootx64.efiファイルをESXiメディアイメージのルートディレクトリにコピー ※mboot.efiに名前を変更
cp /var/lib/tftpboot/images/ESXiv6.5/efi/boot/bootx64.efi /var/lib/tftpboot/images/ESXi6.5/mboot.efi
サーバ固有の設定 #### boot.cfgファイル配置用ディレクトリ作成
インストール対象ESXiサーバのMACアドレスを確認しておく。 MACアドレスに対応するディレクトリを作成する。 例えば、MACアドレスが aa:bb:cc:00:11:22だった場合、01-aa-bb-cc-00-11-22 と、頭に 01- を付加。
mkdir images/ESXiv6.5/01-aa-bb-cc-00-11-22
boot.cfgファイルの作成
作成したディレクトリ配下にboot.cfgファイルをコピー。
cp images/ESXiv6.5/efi/boot/boot.cfg images/ESXiv6.5/01-aa-bb-cc-00-11-22/boot.cfg
boot.cfgファイルは以下の様に編集。
vi images/ESXiv6.5/01-aa-bb-cc-00-11-22/boot.cfg bootstate=0 title=Loading ESXi installer(for 01-00-50-56-a5-2e-e5) #タイトルにどのファイルから起動しているか記載してみた timeout=5 kernel=tboot.b00 #kernelopt=runweasel コメントアsウト kernelopt=ks=http://10.247.6.17/01-aa-bb-cc-00-11-22.cfg #キックスタートファイルの場所(今回は自分がhttpサーバなので自ホストのIPアドレスを記載 modules=b.b00 --- #***省略*** build= updated=0
キックスタートファイルの作成
httpサーバの公開ディレクトリ内にキックスタートファイルを指定したので、ファイルを作成する。
vi /var/www/html/.cfg vmaccepteula # EULAの承諾 install --firstdisk --overwritevmfs #インストールディスクの指定(最初に見つかったディスク) rootpw password #rootパスワードの指定 keyboard Japanese #キーボードマップの設定 network --bootproto=static --ip=192.168.0.10 --gateway=192.168.0.1 --nameserver=8.8.8.8 --netmask=255.255.255.0 --hostname=testserver --addvmportgroup=1 --vlanid=0 #ネットワーク設定。値は適宜変更してください reboot %firstboot --interpreter=busybox vim-cmd hostsvc/enable_ssh #ssh有効 vim-cmd hostsvc/start_ssh #sshdサーバの開始 vim-cmd hostsvc/enable_esx_shell #ESXiシェルの有効化 vim-cmd hostsvc/start_esx_shell #ESXiシェルの開始 esxcli system module parameters set -m tcpip4 -p ipv6=0 reboot
上記で構築は完了です。 ノードを起動して、PXEboot & kickstartが完了する事を確認してください。
/以上
よかったらシェアしてください!