Pocket

ここ最近、仕事で複数のESXi上に仮想マシンを大量に構築していた。
これが結構大変で、DHCPサーバを採用していないため、全ての仮想マシンに個別の静的IPアドレスを設定する必要があったのだ。
静的IPアドレスが設定されていないということで、LinuxもWindowsもvSphere Clientでコンソールから一台一台に個別に設定を行うハメになった。

感想:あの作業はもうやりたくない

というわけで、また仮想マシンの大量構築案件が来た場合に備えて対処方法を考えてみた。
構築段階で作業を行うクライアントPCでDHCPサーバを稼働させて、クライアント機と仮想マシンの間で疎通が取れる状態にして、あとはMACアドレスごとに指定するIPアドレスを割り振ってあげるようスクリプトを流せばいい。
そのための前準備として、仮想マシンのMACアドレス取得スクリプトを書いてみた。
本当は各NICで一行ごとに表示させたかったが、うまく書けなかったのでとりあえずこれで。

Sponsored Links

●VM_NICList.sh

#!/bin/sh
#Get VM List
VimCmdList=`vim-cmd vmsvc/getallvms | grep "vmx-" | grep ".vmx" | awk '{print $2,$3,$4}'`
IFS=$'\n'
echo "VM Name,Ethernet0 MAC,Ethernet0 Network,Ethernet1 MAC,Ethernet1 Network,Ethernet2 MAC,Ethernet2 Network,Ethernet3 MAC,Ethernet3 Network"
for i in $VimCmdList; do
  #Get VM Name
  VMName=`echo "$i" | awk '{print $1}'`
 
  #Get vmx file place
  VMXFolder=`echo "$i" | awk '{print $2}' | cut -d"[" -f2 | cut -d"]" -f1`
  VMXFile=`echo "$i" | awk '{print $3}'`
 
  #Get VM Ethernet Info
  VMEthernetInfo=`cat /vmfs/volumes/$VMXFolder/$VMXFile | sort | grep "networkName \|generatedAddress " | cut -d"\"" -f2 | cut -d"\"" -f1 | sed ':loop; N; $!b loop; ;s/\n/,/g'`
  for i in $VMEthernetInfo; do
    echo "$VMName,$i"
  done
done

あまり綺麗な書き方じゃ無いけど、一応動くからいいか…あくまでもMACアドレスと設定するIPアドレスの対応表を作成するための抽出スクリプトだから、どちらにしてもExcelで編集する必要があるし。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。