kickstart のメモ書きです。
RHEL とか CentOS には、 OS のインストール・セットアップが自動化できちゃう kickstart という機能があります。
ものすごく便利なのですがよく忘れがちなので自分用にメモしておきます。
本当は PXE Boot + DHCP + kickstart が最強だと思ってますが、今回は PXE Boot は利用しないパターンです。
インストール・セットアップの方針はこんな感じです。
- 初回の Boot は Boot 専用メディアから
- インストールパッケージは必要最低限に
- インストール完了後には全てのパッケージをアップデート
スポンサーリンク
kickstartの準備
kickstart を使うために準備するものを以下に書きます。
ks.cfgの作成
検証用マシンを立ち上げる時は以下の様な kickstart を利用しています。(swap 小さいので注意)
以下は CentOS6.4 i386 を利用していますが CentOS5 とかでも基本変わらないです。
# Kickstart file automatically generated by anaconda. # root pw = "rootpass" text install # インストールファイルは Web 上から取ってくる (以下は 32bit) url --url http://ftp.iij.ad.jp/pub/linux/centos/6.4/os/i386/ lang ja_JP.UTF-8 keyboard jp106 # NW 周りの設定 network --device eth0 --bootproto dhcp --noipv6 --hostname centos6.worklog.be # スタティックに設定するならこんな感じに # network --device eth0 --bootproto static --ip 192.168.0.100 --netmask 255.255.255.0 --gateway 192.168.0.254 --nameserver 8.8.8.8,8.8.4.4 --hostname centos6.worklog.be rootpw --iscrypted $pV5qkbTpryea/aS4$z17eF8FIaRnonwHyj9N.P5du0hgcZN2fDUb/Ms.3BfBgKN5VqQQ5gdV6NrTwzgboQF735.5X0G0wNU7DPsc.k/ # iptables 初回は無効にしておく firewall --disabled authconfig --enableshadow --passalgo=sha512 # selinux は無効化 selinux --disabled timezone Asia/Tokyo # ハードディスクは自動で初期化 (デフォルト no) zerombr yes bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # # Partition # clearpart --all --drives=sda part /boot --fstype=ext4 --size=500 part pv.008002 --grow --size=1 volgroup VolGroup00 --pesize=4096 pv.008002 logvol swap --fstype=swap --name=LogVol00 --vgname=VolGroup00 --size=512 --grow --maxsize=1024 logvol / --fstype=ext4 --name=LogVol01 --vgname=VolGroup00 --size=1024 --grow # パッケージ 以下の様なルールで書く # apache を追加したい場合 -> httpd # apache を除外したい場合 -> -httpd %packages @Base @development @japanese-support # ここからセットアップ用のスクリプト (shell とか perl) %post --log=/root/install-post.log #set env PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin # /etc/ssh/sshd_config # listen 22 # パスワードログイン -> 有効 # root ログイン -> 無効 # 空パスログイン -> 無効 perl -i -ne 's/#Port 22/Port 22/; print $_;' /etc/ssh/sshd_config perl -i -ne 's/#PasswordAuthentication yes/PasswordAuthentication yes/; print $_;' /etc/ssh/sshd_config perl -i -ne 's/#PermitEmptyPasswords no/PermitEmptyPasswords no/; print $_;' /etc/ssh/sshd_config perl -i -ne 's/#PermitRootLogin yes/PermitRootLogin no/; print $_;' /etc/ssh/sshd_config # /etc/sysconfig/network-scripts/ifcfg-eth0 # ssh ログイン等を行うので eth0 を 起動時に有効化しておく perl -i -ne 's/ONBOOT="no"/ONBOOT="yes"/; print $_;' /etc/sysconfig/network-scripts/ifcfg-eth0 # /etc/ntp.conf # ntp は ntp.nict.jp に合わせておく perl -i -ne 's/server 0.centos.pool.ntp.org/server ntp.nict.jp/; print $_;' /etc/ntp.conf perl -i -ne 's/server 1.centos.pool.ntp.org\n//; print $_;' /etc/ntp.conf perl -i -ne 's/server 2.centos.pool.ntp.org\n//; print $_;' /etc/ntp.conf # add user # ログイン用ユーザー作成とパスワードの設定 useradd user echo 'userpass' | passwd user --stdin # chkconfig # ntpd の自動起動 chkconfig ntpd on # インストール・セットアップ完了後に yum update yum -y update # end reboot
NW スタティック設定の行を \ で折り返していましたが、これだと ks.cfg を読み込んだ途端にエラーで止まるので、一行で書く必要があります。記入例は修正しました。
2014/02/18 追記
ハードディスクからパーティションテーブルが読み込めないと、初期化するかどうか聞いてくるが “zerombr yes” を追加するとハードディスクを自動で初期化するようになる。
作成した ks.cfg は、エンコードに UTF-8 改行コードは LF を指定して保存します。
セットアップスクリプトの部分は好きにカスタマイズできるので、予めやっておきたい処理を書いて置くと便利です。
ks.cfgの配置とBootメディアの準備
今回は ks.cfg を HTTP 経由で参照させるので、どこかの Web 参照領域に ks.cfg をアップロードしておきます。
Boot メディアは ks.cfg で指定したものに合わせ以下から持ってきます。
これで準備は完了です。
CentOSのkickstartインストール手順
Boot メディアを DVD Rom なり IPMI なりで対象機器にセットして起動します。
Boot後の画面
起動後、[TAB キー] を押します。
TAB キーを押した後の画面
ここで以下のように ks.cfg の場所を指定します。
ks=http://192.168.0.1/ks.cfg
DHCP が利用できる環境での入力例
DHCP 環境がない場合は一時的に利用する IP を指定します。
ks=http://192.168.0.1/ks.cfg ip=192.168.0.100 netmask=255.255.255.0 gateway=192.168.0.254
ks.cfg の場所を IP ではなく、ドメイン名で指定したい場合にはこのように。また、NIC を複数搭載しているとどれを使うか聞いてくるので最初に指定しおくと良いです。
ks=http://example.jp/ks.cfg ip=192.168.0.100 netmask=255.255.255.0 gateway=192.168.0.254 ksdevice=eth0 dns=8.8.8.8
起動後の表示例を追加し補足を追加しました。
ks.cfg が読み込まれると以下のようにインストールが始まります。
インストール中の画面
後は特にやることはありませんのでインストール完了まで待ちます。
インストール完了後は以下のように表示されますので、メディアを外して OS 再起動します。
インストール完了後
インストール完了後はセットアップ内容を確認したりという感じです。
ks.cfg は一度作って置くと便利なので楽したい人にはオススメです。
今更ですが CentOS6 の kickstart 環境構築の参考にさせてもらいました。
あと typo を見つけました。
# apaceh を追加したい場合 -> httpd
# apaceh を除外したい場合 -> -httpd
取り急ぎ、ご報告します。
あいばさん
ご指摘ありがとうございました。修正しました!
渡した ks.cfg の方が細かいはずですけど、hdd の初期化周りは書いてなかったのでまだなら追加もお忘れなく!