PXE+Kickstartで動かすVirtualBox+CentOS環境自動構築サーバーの作り方新人インフラ技術者のためのサーバー構築/運用自動化入門(2)(4/5 ページ)

» 2014年07月17日 18時00分 公開
[菅原亮, 鈴木繁成NTT OSSセンタ]

Kickstartファイルの作成

 Kickstartファイルはインストールに関する情報などをまとめたものです。例えばCentOSのインストール用DVDから起動してインストールする際に、GUIから入力したような情報になります。それ以外に事後に実行するスクリプトも記述できます。

 OSインストーラーがKickstartファイルを取得する方法はいくつかありますが、本連載ではHTTPサーバー経由で取得するように構成します。

図 Kickstartファイルの取得イメージ

 このKickstartファイルは「system-config-kickstart」というツールでも作成できますが、一般にはインストールした環境のrootユーザーのホームディレクトリにあるファイル「anaconda-ks.cfg」をコピーして修正する方が楽でしょう。anaconda-ks.cfgは、その環境をインストールした際の情報で生成されたKickstartファイルで、OSインストーラであるanacondaによって自動的に作成されています。

 Kickstartファイルは3つのセクションに分かれています。それぞれのセクションごとの記述内容を説明しますので、自動構築サーバーのインストールした際に作成されたanaconda-ks.cfgをdefault.cfgというファイル名でコピーして修正してみましょう。

【1】コマンドセクション

 新規/上書きインストールの選択やインストールメディアの指定、パーティションの分割方法やタイムゾーンなど指定します。修正すべきポイントに絞って説明します。

  • url

 DVDからインストールした場合はcdromと記述されていますので、これをurlに変更します。指定するオプションは先ほど自動構築サーバーに作成したYumリポジトリへのURLになります。

  • network

 ネットワーク設定を記述します。手動インストールした際の設定内容になっていますので、必要に応じて修正します。

  • rootpw

 rootパスワードのハッシュです。ハッシュは以下のコマンドラインで求められます。表示されたハッシュをコピー&ペーストします。

# grub-crypt --sha-512
Password: {パスワードを入力}
Retype password: {パスワードを再入力}
{パスワードのハッシュ}

 もしくはopensslを使用します。opensslの場合はMD5形式のみになります(grub-cryptの例はSHA-512)。

# openssl passwd -1
Password: {パスワードを入力}
Verifying - Password: {パスワードを再入力}
{パスワードのハッシュ}
  • selinux

 SELinuxの設定です。手動でのインストールでは無効にできませんが、Kickstartファイルを利用する場合はインストール時に無効化できます。

  • zerombr、clearpart

 インストール時、ディスクを初期化する場合に記述します。

  • part

 パーティションの設定です。手動インストールした際の設定内容が、コメントアウトされた状態で記載されていますので、その内容を参考に記述します。

  • repo

 YumリポジトリへのURLを記述します。

 以上を反映したコマンドセクションの記述例は以下になります。

install
url --url http://{自動構築サーバーのIPアドレス}/centos65
lang ja_JP.UTF-8
keyboard jp106
network --bootproto=dhcp --onboot=yes
rootpw  --iscrypted {パスワードのハッシュ}
selinux --disabled
authconfig --enableshadow --passalgo=sha512
timezone Asia/Tokyo
bootloader --location=mbr --driveorder=sda
zerombr
clearpart --all
part /boot --fstype=ext4 --asprimary --size=128
part / --fstype=ext4 --grow --size=1
part swap --size=1024
reboot
repo --name="DVD" --baseurl=http://{自動構築サーバーのIPアドレス}/centos65 --cost=100

【2】パッケージセクション

 コマンドセクションの次に記述します。%packagesから%endの囲まれた部分がパッケージセクションになります。

  • @{パッケージグループ名}で指定パッケージグループをインストール
  • +{パッケージ名}で指定パッケージをインストール。+は省略できる
  • -{パッケージ名}で指定パッケージをインストール

 パッケージグループの内容は、CentOSのインストール用DVDの/repodata配下に圧縮されたXMLとして格納されています。ただし、このXMLファイルはあまり可読性が良くないため、anaconda-ks.cfgを流用しない場合はsystem-config-kickstartで作成した方が無難でしょう。

 Minimal(最小構成)インストールでの、パッケージセクションの例を以下に示します。

%packages
@core
@japanese-support
@server-policy
@workstation-policy
%end

【3】スクリプトセクション

 このセクションはKickstartファイルの末尾に記述します。インストール開始前と終了後のそれぞれのタイミングで実行できます。

 インストール開始前のスクリプトは「%pre」、インストール終了後のスクリプトは「%post」で開始し、「%end」で閉じます。%preスクリプトはchrootされない状態で、%postスクリプトはインストール先にchrootされた状態で実行されます。実行時のログファイル名も指定できます。

 インストール終了後、/etc/hostsファイルにエントリを追加する簡単な例を以下に示します。

%post --log=/root/install-post.log
echo "192.168.1.2 puppet" | cat >> /etc/hosts
%end

 Kickstartファイルの詳細については、レッドハット社のWebサイトや「RedHat Linux KickStart HOWTO: KickStart の設定ファイル」などにドキュメントがありますので、そちらを参照してください。

 また、作成したKickstartファイルはWeb公開用のディレクトリ(/var/www/html/)に配置します。TFTPサーバーの設定例ではksディレクトリ配下に配置するように設定しましたので、以下のようなコマンドを実行して配置してください。

# mkdir /var/www/html/ks
# cp default.cfg /var/www/html/ks

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。