ESXi上の仮想マシンが持つBIOSのシリアルナンバー一括取得スクリプト
以前からUUIDを用いた固定I…
前回、UUIDを用いてVMware ESXiの自動インストール実行時に固定IPアドレスの設定等を行ったが、今回はUUIDからシリアルナンバーに変更して固定IPを設定させる。
というのも、UUIDの場合だと機種ごとに文字列入れ替えのアルゴリズムが変動するため、導入前に対象機種でテスト→順序入れ替えアルゴリズムの変更が必要になるが、シリアルナンバーをキーにすればそれが解消するからだ。
基本的な流れは前回のESXi自動インストール時に初期設定を行うものと一緒だ。
以前の記事の内容とほぼ同じだが、取得するものが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
こちらは、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/[^"]*"\([^"]*\)".*//'` # 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
キックスタートの定義ファイルを作成する。
内容は前回のものと同一。
# # 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
後は、これらのファイルを所定の位置に設置してインストールディスクを作成するだけだ。
ディスクの作成方法の一例は、以前書いたこちらの記事を参考にしてもらいたい。
最後は、前回と同様にインストールを実行するだけだ。
なお、検証にはFujitsu Primergy RX100 S6を用いている。
…そろそろ、ipmitoolで筐体のMACアドレスを全部調達出来ないかなぁ?
そうすれば、DHCPサーバ側でどのMACアドレスにどのIPアドレスを割り振るか決められるので、場所によってはこういった筐体ごとに固定IPアドレスを割り振る対処が要らなくなると思うんだけど…
Pingback: VMware ESXi 5.5のライセンス登録をコマンドから実行 | 俺的備忘録 〜なんかいろいろ〜