PXE+Kickstartで動かすVirtualBox+CentOS環境自動構築サーバーの作り方:新人インフラ技術者のためのサーバー構築/運用自動化入門(2)(4/5 ページ)
サーバー構築の自動化で利用される技術、自動化ツールとして「Kickstart」「Puppet」を紹介し、構築から運用まで、システムライフサイクル全体にわたる運用管理の自動化についても解説する連載。今回は、PXEとKickstartを使い、VirtualBox+CentOS環境を自動でインストールするためのサーバーの作り方について。
Kickstartファイルの作成
Kickstartファイルはインストールに関する情報などをまとめたものです。例えばCentOSのインストール用DVDから起動してインストールする際に、GUIから入力したような情報になります。それ以外に事後に実行するスクリプトも記述できます。
OSインストーラーがKickstartファイルを取得する方法はいくつかありますが、本連載ではHTTPサーバー経由で取得するように構成します。
この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.