前回、UUIDを用いてVMware ESXiの自動インストール実行時に固定IPアドレスの設定等を行ったが、今回はUUIDからシリアルナンバーに変更して固定IPを設定させる。 というのも、UUIDの場合だと機種ごとに文字列入れ替えのアルゴリズムが変動するため、導入前に対象機種でテスト→順序入れ替えアルゴリズムの変更が必要になるが、シリアルナンバーをキーにすればそれが解消するからだ。

基本的な流れは前回のESXi自動インストール時に初期設定を行うものと一緒だ。

1.下準備

以前の記事の内容とほぼ同じだが、取得するものがUUIDからシリアルナンバーに変更している。 取得方法については、こちらのIPMIを用いたシリアルナンバー取得コマンドを利用するか、ESXi上の仮想マシンであればこちらのスクリプトを用いると良い。

用意するhost.listの例を以下に示す。

●host.list

hostname,serialno,defaultgw,nic0,nic1
Test-ESXi001,VMware-56 4d 33 c9 f6 32 ab 40-14 88 00 e9 ca 90 d0 59,192.168.0.1,192.168.0.31/24,172.26.0.31/24
Test-ESXi002,VMware-56 4d ab 56 0a e5 9c d2-85 ed cf e9 7f 5a 9e 64,192.168.0.1,192.168.0.32/24,172.26.0.32/24
Test-ESXi003,VMware-56 4d f1 63 d8 10 26 5b-56 70 7d 08 1c 45 71 6f,192.168.0.1,192.168.0.33/24,172.26.0.33/24
Test-ESXi008,MA1A004737,192.168.0.1,192.168.0.38/24,172.26.0.38/24

2.スクリプトファイルの作成

こちらは、setip1.shは前回と全く同じ。 setip2.shのみ、UUIDではなくシリアルナンバーから情報を取得させている。

●setip1.sh

#!/bin/sh
# This Script is VMware ESXi Set Config Script
######################################################
# 1. Enable SSH
# 2. Enable ESX Shell
# 3. Create vSwitch
######################################################

######################################################
# 1.Enable SSH
######################################################
vim-cmd hostsvc/enable_ssh
vim-cmd hostsvc/start_ssh

######################################################
# 2.Enable ESX Shell
######################################################
vim-cmd hostsvc/enable_esx_shell
vim-cmd hostsvc/start_esx_shell

######################################################
# 3.Create vSwitch
######################################################
esxcfg-vswitch -a vSwitch1
esxcfg-vswitch -A "VM Network 1" vSwitch1
esxcfg-vswitch -A "Management Network 1" vSwitch1
esxcfg-vswitch -L vmnic1 vSwitch1

●setip2.sh

#!/bin/sh
# This Script is VMware ESXi Set Config Script
######################################################
# Set IP Address fpr vmknic
######################################################

cidr2mask ()
 {
 # Number of args to shift, 255..255, first non-255 byte, zeroes
 set -- $(( 5 - ($1 / 8) )) 255 255 255 255 $(( (255 << (8 - ($1 % 8))) & 255 )) 0 0 0
 [ $1 -gt 1 ] && shift $1 || shift
 echo ${1-0}.${2-0}.${3-0}.${4-0}
}

######################################################
# Set IP Address for vmknic
######################################################

# Set Var
LIST=./host.list
NIC0=vmknic0
NIC1=vmknic1

NIC0PORTG="Management Network"
NIC1PORTG="Management Network 1"

# Get Serial No
MYSERIAL=`smbiosDump | grep "System Info: #1" -A 6 | grep "Serial" | awk 'BEGIN { FS=": "; } { print $2; }' | sed -e 's/[^"]*"\([^"]*\)".*/\1/'`

# Get HostName,IP Address,Default Gateway
HOSTNAME=`cat $LIST | grep "$MYSERIAL" | awk 'BEGIN {FS=","} { print $1 }'`
GATEWAY=`cat $LIST | grep "$MYSERIAL" | awk 'BEGIN {FS=","} { print $3 }'`

# NIC0
NIC0_IPADDR=`cat $LIST | grep "$MYSERIAL" | awk 'BEGIN {FS=","} { print $4 }' | awk 'BEGIN {FS="/"} {print $1}'`
NIC0_PREFIX=`cat $LIST | grep "$MYSERIAL" | awk 'BEGIN {FS=","} { print $4 }' | awk 'BEGIN {FS="/"} {print $2}'`
NIC0_SUBNET=`cidr2mask $NIC0_PREFIX`

# NIC1
NIC1_IPADDR=`cat $LIST | grep "$MYSERIAL" | awk 'BEGIN {FS=","} { print $5 }' | awk 'BEGIN {FS="/"} {print $1}'`
NIC1_PREFIX=`cat $LIST | grep "$MYSERIAL" | awk 'BEGIN {FS=","} { print $5 }' | awk 'BEGIN {FS="/"} {print $2}'`
NIC1_SUBNET=`cidr2mask $NIC1_PREFIX`

cd /tmp/

esxcli system hostname set --host="$HOSTNAME"
esxcfg-route -a default $GATEWAY

esxcfg-vmknic    -i $NIC0_IPADDR -n $NIC0_SUBNET -p "$NIC0PORTG"
esxcfg-vmknic -a -i $NIC1_IPADDR -n $NIC1_SUBNET -p "$NIC1PORTG"

/sbin/services.sh restart

3.キックスタート定義ファイルの作成

キックスタートの定義ファイルを作成する。 内容は前回のものと同一。

#
# Sample scripted installation file
#
# Accept EULA
vmaccepteula
# Set root password
rootpw password
#Install on local disk overwriting any existing VMFS datastore
install --firstdisk --overwritevmfs
# Network configuration
network --bootproto=dhcp --device=vmnic0

# Reboot after installation completed
reboot --noeject

%firstboot --interpreter=busybox
vmkload_mod iso9660
/sbin/vsish -e set /vmkModules/iso9660/mount mpx.vmhba32:C0:T0:L0
cp -r /vmfs/volumes/CDROM/WORK/ /vmfs/volumes/datastore1/
mv /vmfs/volumes/datastore1/WORK/SETIP1.SH /tmp/setip1.sh
mv /vmfs/volumes/datastore1/WORK/SETIP2.SH /tmp/setip2.sh
mv /vmfs/volumes/datastore1/WORK/HOST.LIS /tmp/host.list
rm -r /vmfs/volumes/datastore1/WORK
cd /tmp
sh /tmp/setip1.sh
sh /tmp/setip2.sh
reboot

4.インストールディスクの作成

後は、これらのファイルを所定の位置に設置してインストールディスクを作成するだけだ。 ディスクの作成方法の一例は、以前書いたこちらの記事を参考にしてもらいたい。

5.インストール実行

最後は、前回と同様にインストールを実行するだけだ。 なお、検証にはFujitsu Primergy RX100 S6を用いている。

…そろそろ、ipmitoolで筐体のMACアドレスを全部調達出来ないかなぁ? そうすれば、DHCPサーバ側でどのMACアドレスにどのIPアドレスを割り振るか決められるので、場所によってはこういった筐体ごとに固定IPアドレスを割り振る対処が要らなくなると思うんだけど…