サーバ大量構築時のキモ ~KickstartでのLinux自動インストールディスク作成~

今回はOSのクローンではなく、RHEL系Linuxの機能である『Kickstart』を用いた自動インストール(Silent Install)を行う。

20140525_000000_1

『KickStart』での自動インストールは、専用のconfigファイル(定義ファイル)を用いて行われる。
configファイルの読込みは、インストールディスクとは別のUSBメモリやDVD、ネットワーク上のファイルを読み込ませる方法もあるが、今回はOSのディスクと組み合わせた自動インストールディスクを作成することにした。
検証に使用するOSはCent OS 6.5だ。

20140525_000001

1.『Kickstart』で可能な事

『Kickstart』では、configファイルに動作を記述することで以下のような事ができる。

  1. インストーラーの自動実行
  2. OSインストール時のパッケージ自動インストール
  3. インストール前、後のスクリプト自動実行

これらを実現するため、『Kickstart』のconfigファイルは以下の区分に分けて書かれている。

  1. コマンドセクション
  2. パッケージセクション
  3. スクリプトセクション

上記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

20140525_000002_1

後は、このツールで設定を進めていくだけだ。
以下に、各設定の例を記載していく。

(1)基本設定

Screenshot-キックスタート設定ツール1

(2)インストール方法

Screenshot-キックスタート設定ツール2

(3)ブートローダーオプション

Screenshot-キックスタート設定ツール3

(4)パーティション情報

Screenshot-キックスタート設定ツール_1_1

Sponsored Links

 

(5)ネットワーク設定

Screenshot-キックスタート設定ツール5

Screenshot-ネットワークデバイス情報1

(6)認証

Screenshot-キックスタート設定ツール6

(7)ファイヤーウォール設定

Screenshot-キックスタート設定ツール7

(8)ディスプレー設定

Screenshot-キックスタート設定ツール8

(9)パッケージの選択

Screenshot-キックスタート設定ツール9

さて、上記の例でconfigファイルを「ks.cfg」という名称で保存する。

Screenshot-キックスタート設定ツール

なお、「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アドレスを筐体ごとに自動設定することも可能だ。

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 1 comments

  1. Pingback: 【コンピューター】 IE10 以下を切る場合の JavaScript チェックリスト – Qiita 2014年12月19日 深夜便 | aquadrops * news

Leave a Comment

メールアドレスが公開されることはありません。

*