RHEL 7 RCでKickstartを試したけどNetworkがうまく設定されなかったので困ってた

kickstartファイル中にnetworkについて書けば動くはずなんだけども、どうやら以下のようにしないとだめ。

network --device=ens32 --bootproto=static --ip=10.1.1.1 --netmask=255.255.0.0 --gateway=10.1.255.254 --nameserver=10.1.255.254

普通に" --device=ens32"が必要だった、というだけなんだけども、RHEL7からはなんかデバイス名がハードウェア依存になるっぽいので、ここはkickstartファイルに書けない。常に同じデバイス名であることが保証されてるなら別ですが。

(ちなみにVMWareの仮想NICでVMXNET3だとens32, E1000だとens192だった。なので個人用途ではほぼ決め撃ちでも問題ない。)

検索してもそれっぽい情報をひっかけられなかったので、%postで書けないか何度も動かしてみてると、

nmcliで設定してもダメみたいで、network-scripts灰化にifcfg-[デバイス名]を作ってあげればよさそうだった。NetworkManagerとはなんだったのか。


kickstartファイルの一番下に%postでifcfg-[デバイス名]のファイルを作るスクリプトを書いてあげたらうまくいった。

中身は普通のBashスクリプトで、GATEWAY==DNS Serverという扱い。デバイス情報はnmcliで取る。

%post
#raw
GATEWAY="10.1.255.254"
IPV4ADDR="10.1.1.1"
IF_NAME=`nmcli -t --fields DEVICE con | grep -v '^lo' | head -n 1`
UUID=`nmcli --fields GENERAL.UUID con show $IF_NAME | awk '{print $2}'
HWADDR=`nmcli --fields GENERAL.HWADDR dev show $IF_NAME | awk '{print $2}'
PREFIX=16

echo "override ifcfg-$IF_NAME"
cat << __EOF__ > /etc/sysconfig/network-scripts/ifcfg-$IF_NAME
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=$IF_NAME
UUID=$UUID
ONBOOT=yes
IPADDR0=$IPV4ADDR
PREFIX0=$PREFIX
GATEWAY0=$GATEWAY
DNS1=$GATEWAY
HWADDR=$HWADDR
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
__EOF__

#end raw
%end