サーバ大量構築時のキモ ~KickstartでのLinux自動インストールディスク作成~
今回はOSのクローンではなく、RHEL系Linuxの機能である『Kickstart』を用いた自動インストール(Silent Install)を行う。
『KickStart』での自動インストールは、専用のconfigファイル(定義ファイル)を用いて行われる。
configファイルの読込みは、インストールディスクとは別のUSBメモリやDVD、ネットワーク上のファイルを読み込ませる方法もあるが、今回はOSのディスクと組み合わせた自動インストールディスクを作成することにした。
検証に使用するOSはCent OS 6.5だ。
1.『Kickstart』で可能な事
『Kickstart』では、configファイルに動作を記述することで以下のような事ができる。
- インストーラーの自動実行
- OSインストール時のパッケージ自動インストール
- インストール前、後のスクリプト自動実行
これらを実現するため、『Kickstart』のconfigファイルは以下の区分に分けて書かれている。
- コマンドセクション
- パッケージセクション
- スクリプトセクション
上記3つのセクションに分け、上から順に記述する。
configファイルの細かい記述方法については、また後日記載する。
2.configファイルの作成
さて、それでは実際にconfigファイルを作成していこう。
といっても、手動で作るのは面倒だなぁ…というわけで、ここでは既存のCentOS上でconfigファイルを作成するツール『system-config-kickstart』を用いて作成を行う。
このツールを実行すると、「キックスタート設定ツール」というGUIでKickstartのconfigファイルを作成できるプログラムを使用できる。
まずは、別途手動インストールしたCentOSを用意し、その上で以下のコマンドを実行。『system-config-kickstart』パッケージをインストールする。
yum install system-config-kickstart
上記コマンドでパッケージをインストール後、CentOS上で以下のコマンドを実行しキックスタート設定ツールを起動させる。
system-config-kickstart
後は、このツールで設定を進めていくだけだ。
以下に、各設定の例を記載していく。
(1)基本設定
(2)インストール方法
(3)ブートローダーオプション
(4)パーティション情報
(5)ネットワーク設定
(6)認証
(7)ファイヤーウォール設定
(8)ディスプレー設定
(9)パッケージの選択
さて、上記の例でconfigファイルを「ks.cfg」という名称で保存する。
なお、「ks.cfg」は「/root/ダウンロード」直下に設置している。
出来上がったファイル「ks.cfg」の中身は以下。
#platform=x86, AMD64, 又は Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use CDROM installation media cdrom # Root password rootpw --iscrypted $1$F3O.1DJZ$uuErHjcd.UCbs4SGswt9L. # System authorization information auth --useshadow --passalgo=sha512 # Use graphical install graphical firstboot --disable # System keyboard keyboard us # System language lang ja_JP # SELinux configuration selinux --disabled # Installation logging level logging --level=info # System timezone timezone Asia/Tokyo # Network information network --bootproto=dhcp --device=eth0 --onboot=on # System bootloader configuration bootloader --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part / --fstype="ext4" --grow --size=1 %packages @basic-desktop @desktop-debugging @desktop-platform @directory-server @fonts @general-desktop @graphical-admin-tools @input-methods @kde-desktop @legacy-x @network-server @postgresql @postgresql-client @remote-desktop-clients @scalable-file-systems @server-platform @storage-server @system-admin-tools @virtualization @virtualization-client @virtualization-platform @virtualization-tools @web-server @web-servlet @x11 crypto-utils %end
なお、このks.cfgを作成する上で注意したいのが、忘れずにパーティションの作成とパッケージのインストール対象を選択することだ。
これを忘れると、該当箇所の設定を手動で行う必要が出てしまい、自動インストールにならない。
3.自動インストールディスクの作成
さて、次はこの「ks.cfg」を保有したOSインストールディスクを作成する。
既存のCentOSマシンにCentOS 6.5のDVDを挿入し、以下のコマンドを実行しマウントする。
[root@test-centos ~]# mkdir /media/CentOS_6.5_Final/ [root@test-centos ~]# mount /dev/cdrom /media/CentOS_6.5_Final/ mount: ブロックデバイス /dev/sr0 は書き込み禁止です、読込み専用でマウントします
次に一度DVDの中身を展開し、「ks.cfg」を所定の場所に設置する。
今回は、DVDの階層でいうと一番上の階層に設置する。
[root@test-centos ~]# cd /media/CentOS_6.5_Final/ [root@test-centos CentOS_6.5_Final]# [root@test-centos CentOS_6.5_Final]# mkdir /home/CentOS_6.5_Final/ [root@test-centos CentOS_6.5_Final]# find . -maxdepth 1 -mindepth 1 -exec cp -rp {} /home/CentOS_6.5_Final \; [root@test-centos CentOS_6.5_Final]# cp /root/ダウンロード/ks.cfg /home/CentOS_6.5_Final/
次に、「isolinux/isolinux.cfg」を以下のように編集し、ブート時に自動的に「ks.cfg」を読み込ませるようにする。
default vesamenu.c32 default ks #prompt 1 timeout 600 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.5! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append - label ks menu label vmlinuz kernel vmlinuz append ks=cdrom:/ks.cfg initrd=initrd.img
最後に、以下のコマンドを実行しCentOSの自動インストールディスクのisoファイルを作成する。
[root@test-centos CentOS_6.5_Final]# cd /home/CentOS_6.5_Final/ [root@test-centos CentOS_6.5_Final]# mkisofs -v -r -J -o ../CentOS_6.5_Final.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
これで、自動インストールディスクが作成できた。
後はこのディスクを挿入し、DVDからブートさせるだけでインストール出来る。
…なぉ、ここまで記述しといてあれだけど、サーバの電源容量確保の問題のような”一度に起動出来るマシンに限りが無い”のであれば、PXEブートを用いた自動インストールの方が良いと思う。
また、事前に各筐体のシリアルナンバーが把握できる状態(各筐体のマネジメントポートのIPアドレスが割り振られているなど)であれば、こちらのスクリプトを用いてホスト名と固定IPアドレスを筐体ごとに自動設定することも可能だ。
Pingback: 【コンピューター】 IE10 以下を切る場合の JavaScript チェックリスト – Qiita 2014年12月19日 深夜便 | aquadrops * news