読者です 読者をやめる 読者になる 読者になる

底辺エンジニアの備忘録

30過ぎて、記憶力低下が著しい為、メモ代わりにしていく予定。 自身のスキルが低いので、内容の正確さは保障できません・・・OTL

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/sh

HOST_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等の共通の設定等もここに入れれば初回設定が大分楽になりそう。

 

ただ、似たような構成の仮想マシンでないとあまり意味はなさそう。

終わり