ESXi6.0をpxebootで自動インストールする。

##はじめに
ESXi6.0の自動インストールの手順をまとめました。
自分の備忘をかねているのでやや長文です。

##目次
1. DHCPサーバの構築
2. TFTPサーバの構築
3. Webサーバの構築
4. OSイメージの準備
5. 設定ファイルの準備
6. kickstartファイルの準備
7. 起動する

##1. DHCPサーバの構築
1.DHCPサーバを準備します。

~~~
# yum install dhcp
# rpm -qa | grep dhcp
dhcpv6-client-1.0.10-4.el5
dhcp-3.0.5-18.el5
~~~

2./etc/dhcpd.conf を編集します。
　①「range」の行は、DHCPで割り当てるIPアドレスの範囲を記入する。
　②「option routers」の行は、getewayを指定する。
　③「next-server」の行は、この仮想マシン自体のIPアドレスを指定する。
　④「filename」の行は、bootx64.efiを指定する。

~~~
ddns-update-style interim;

allow booting;
allow bootp;

ignore client-updates;
set vendorclass = option vendor-class-identifier;

option pxe-system-type code 93 = unsigned integer 16;

subnet 172.23.0.0 netmask 255.255.0.0 {
     option subnet-mask         255.255.0.0;
     range dynamic-bootp        172.23.190.60 172.23.190.80;
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                172.23.190.6;
     filename                   "/var/lib/tftpboot/linux_install/pxelinux.0";
}
~~~


3.サービスを再起動します。

~~~
# service dhcpd restart
~~~

##2. TFTPサーバの構築
1.TFTPサーバを用意します。

~~~
# yum install tftp-server tftp
# rpm -qa | grep tftp
tftp-0.49-7.el6.x86_64
tftp-server-0.49-7.el6.x86_64
~~~

2./etc/xinitd.d/tftpを編集します。
　①「server_args」の行は、TFTPでアクセスしたときに見せるディレクトリを指定する。
　②「disable」の行を「no」に書き換える。

~~~
# 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 /tftpboot
      disable                 = no
      per_source              = 11
      cps                     = 100 2
      flags                   = IPv4
}
~~~

3.サービスを再起動します。

~~~
# service xinetd restart
~~~

##3. Webサーバの構築
1.Webサーバをインストールします。

~~~
# yum install httpd
# rpm -qa | grep httpd
httpd-2.2.15-39.el6.x86_64
httpd-tools-2.2.15-39.el6.x86_64
~~~

2.ホスト名を確認します。

~~~
# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hostname
~~~

3./etc/httpd/conf/httpd.confを編集します。
　①「ServerName」の行に、ホスト名を入力する。
　②「AddDefaultCharset UTF-8」の行は、コメントアウトする。

~~~
(途中省略)
ServerName hostname
(途中省略)
#AddDefaultCharset UTF-8
~~~

4.サービスを再起動します。

~~~
# service httpd restart
~~~


5.SELinuxを無効化します。

~~~
# /usr/sbin/getenforce
Enfording
~~~





##4.OSイメージの準備
1.ESXi6.0のisoをマウントします。

~~~
# mount -t iso9660 -o loop /root/~.iso /tmp/esxi6.0
~~~

2.TFTPサーバへ格納します。

~~~
# cp /tmp/esxi6.0/* /tftpboot/esxi_install/esxi6.0/
# cp /tmp/esxi6.0/efi/boot/bootx64.efi /tftpboot/esxi_install/
~~~

##5. 設定ファイルの準備
1.インストール対象のサーバのうち、接続するNICのMACアドレスを調べておいてください。
2.そのMACアドレス名でディレクトリを作成し、boot.cfgを置きます。
　※xx-xx-xx-xx-xx-xxは、MACアドレスを表しています。
　※MACアドレスの英字は小文字で入力してください。（大文字だと読み込めないようです。）

~~~
# mkdir /tftpboot/esxi_install/01-xx-xx-xx-xx-xx-xx
# cp /tmp/esxi6.0/efi/boot/boot.cfg /tftpboot/esxi_install/01-xx-xx-xx-xx-xx-xx/
~~~

3.設定ファイルの中身を編集します。

~~~
bootstate=0
title=Loading ESXi installer (^^)
timeout=3

prefix=esxi_install/esxi6.0
kernel=tboot.b00
#kernelopt=runweasel

kernelopt=ks=http://192.168.190.50/01-xx-xx-xx-xx-xx-xx.cfg

modules=b.b00 --- jumpstrt.gz　…(この先は省略です。)
~~~

##6.kickstartファイルの準備
1.Webサーバ内に「/var/www/html/01-xx-xx-xx-xx-xx-xx.cfg」を作成します。
　ここへ、IPアドレスなど設定したい内容を記入します。

~~~
vmaccepteula
install --firstdisk --overwritevmfs
rootpw password
keyboard Japanese

network --bootproto=static --ip=10.60.190.20 --gateway=10.160.190.1 --nameserver=10.60.190.17,10.60.190.18 --netmask=255.255.255.0 --hostname=testserver --addvmportgroup=1 --vlanid=0

reboot

%firstboot --interpreter=busybox

vim-cmd hostsvc/enable_ssh
vim-cmd hostsvc/start_ssh
vim-cmd hostsvc/enable_esx_shell
vim-cmd hostsvc/start_esx_shell
esxcli system module parameters set -m tcpip4 -p ipv6=0

reboot
~~~


##7. 起動する
インストール対象のサーバとPCを接続し、サーバをネットワークブートすると
ESXi6.0が自動でインストールされます。

 :octocat: :shaved_ice: