CentOS7_初期設定自動化
仕事vSphereを使う機会が増えてきたので、メモ
仮想マシンを大量に構築する際は、OSをインストールした仮想マシンをテンプレート化しPowerCLIで仮想マシンを作れば大分負荷は減るが、OSの初期設定をVMコンソールで作業するのはTeraTermと違いコピペできないので面倒
PowerCLIでもOSの設定をできなくもないが、微妙に使いにくいのでBashで出来ないか調査したら、テンプレートから複製した仮想マシンのNICもテンプレートと元となる仮想マシンとnmcliの結果が↓のように一緒だったのでBashのスクリプトで出来そう
# nmcli conn show
eno16777984 <UUID> 802-3-ethernet eno16777984
eno33557248 <UUID> 802-3-ethernet eno16777984
仮想マシン→NIC2つと仮定してIPを振るスクリプトを作成した。
テンプレートから作成した仮想マシンをそれぞれ下記IPで割りあて
host名 eno16777984 eno33557248 GW
test 192.168.1.14/24 10.100.1.1/24 192.168.1.1
test1 192.168.1.15/24 10.100.1.2/24 192.168.1.1
test2 192.168.1.16/24 10.100.1.3/24 192.168.1.1
スクリプトはOSのホスト名から上記行の設定を投入していく処理
# cat /var/tmp/autoset.sh
#!/bin/shHOST_NAME=`hostname`
Array=(
'test 192.168.1.14/24 10.100.1.1/24 192.168.1.1'
'test1 192.168.1.15/24 10.100.1.2/24 192.168.1.1'
'test2 192.168.1.16/24 10.100.1.3/24 192.168.1.1'
)for i in "${Array[@]}"; do
data=(${i[@]})
host=${data[0]}
eno16777984=${data[1]}
eno33557248=${data[2]}
gw=${data[3]}if [ ${HOST_NAME} = ${host} ]; then
nmcli conn mod eno16777984 ipv4.method manual connection.autoconnect yes ipv4.addresses "${eno16777984}" ipv4.gateway ${gw}
nmcli conn mod eno33557248 ipv4.method manual connection.autoconnect yes ipv4.addresses "${eno33557248}"
fi
done
やり方はテンプレートから作成後にhostnamectl set-hostname xxxにてホスト名を変更。 そして上記スクリプトを実施。 するとそれぞれのホスト名に行にMatchした設定が入る。 そしてhost名の変更を反映するため再起動
とりあえず、上記の3パターンの実行結果は問題なし
firewall-cmd等の共通の設定等もここに入れれば初回設定が大分楽になりそう。
ただ、似たような構成の仮想マシンでないとあまり意味はなさそう。
終わり