2012年10月30日火曜日

サーバの環境構築自動化を考える vol.4: KickStart ~ ks.cfg 基礎編

こんにちは、OSSテクノロジーセンターの原です。

少し時間が空いてしまいましたが、前回までで KickStart 環境構築準備の手順としては完了しました。


4回目である今回は、KickStart 環境のキモである、レシピとなる ks ファイルの基本的な作成方法を見ていきます。

ks ファイルのテンプレートとして利用できるファイルは、OS インストール時に /root/anaconda-ks.cfg に作成されます。

まずは minimal インストールを行なった際に生成された、anaconda-ks.cfg を見ていきましょう。

/root/anaconda-ks.cfg

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Tokyo
bootloader --location=mbr --driveorder=vda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --linux --drives=vda
#volgroup VolGroup --pesize=4096 pv.1
#logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
#logvol swap --name=lv_swap --vgname=VolGroup --grow --size=2016 --maxsize=2016


#part /boot --fstype=ext4 --size=500
#part pv.1 --grow --size=1


%packages
@core
@server-policy
%end

まず、ks.cfg ファイルの記法についてですが、記号 (#) で始まる行は、コメントとして処理され、無視されます。

また各項目は必須項目と省略可能項目に分かれています。必須項目が省略されている場合は、インストールプログラムは通常のインストールと同様、ユーザーに関連項目の回答を要求してきます。


install: 省略可能項目

システムの新規インストールを行うよう指示するオプションです。アップグレードを行う場合、install ではなく upgrade と指定します。

このモードでは、cdrom、 harddrive、 nfs、url (FTP、HTTP、HTTPS のいずれか) の中からインストールソースを指定する必要があります。


lang: 必須項目

インストール中に使用する言語とインストールしたシステムで使用するデフォルト言語を設定します。この例では英語を指定していますが、日本語を指定する場合、 ja_JP.UTF-8 を指定します。


keyboard: 必須項目

インストール中に使用するキーボードタイプとインストールしたシステムで使用するデフォルトキーボードタイプを設定します。この例では英語キーボードを指定していますが、日本語キーボードを指定する場合、 jp106 を指定します。


network: 省略可能項目

ネットワーク情報を設定して、インストーラの環境でネットワークデバイスを自動的にアクティベートします。この例では --onboot no と指定されており、明示的に起動時にデバイスを無効化しているようです。


rootpw: 必須項目

root ユーザのパスワードを設定します。--iscrypted オプションの後には、既に暗号化された文字列が入りますが、このオプションを外して平文で作成することも可能です。


firewall: 省略可能項目

iptables の設定に相当します。この例では ssh のポートを明示的に開放しています。


authconfig: 必須項目

認証オプションの設定を行ないます。これは、 authconfig コマンド相当の動作です。この例ではシャドウパスワードを有効にし、SHA-512 ハッシュアルゴリズムを設定しています。


selinux: 省略可能項目

SELinux の状態を設定します。なお、省略した場合、SELinux は強制モード (enforcing) で設定されます。


timezone: 必須項目

インストールしたシステムで使用するタイムゾーンを設定します。この例ではハードウェアクロックを UTC (グリニッジ標準) とし、タイムゾーンは東京を指定しています。


bootloader: 必須項目

ブートローダーをインストールする方法を指定します。この例では、ブートレコードを書き込む場所は mbr に、BIOS がブートする順序で最初になるドライブを vda に、kernel パラメータとして、"crashkernel=auto rhgb quiet" を指定しています。


clearpart: 省略可能項目

OS を新規にインストールするにあたり、システムから一旦パーティションを削除します。--linux オプションを付与すると、全ての既存の Linux パーティションを消去します。


volgroup: 省略可能項目

LVM (Logical Volume Management) グループを作成するために使用します。


logvol: 省略可能項目

論理ボリューム管理 (LVM) 用の 論理ボリュームを作成するために使用します。

--grow オプションを付与すると、最大利用可能サイズまで論理ボリュームを拡張します。


part: 必須項目

初回インストール時に作成されるテンプレート anaconda-ks.cfg では安全のためコメントアウトされていますが、宣言必須項目です。

この項目はシステムにパーティションを作成します。 --grow オプションを付与すると、最大利用可能サイズまでパーティションを拡張します。また、swap パーティションの場合、swap --recommended とすると、精度は高くないですがシステムに導入されている物理メモリから自動的に swap 量を決定してくれるので、非常に便利です。


%packages セクション

このセクションではインストールしたいパッケージをリストします。パッケージ単体を指定する場合は、単にパッケージ名を、パッケージグループを指定する場合は @グループ名 と指定します。

この例では core グループ、server-policy グループのみがインストールされます。


さて、今回は ks.cfg の読み方をかいつまんで説明しましたが、次回は実際に動く ks.cfg を作成していきたいと思います。

今回はここまでです。次回もお楽しみに。

0 件のコメント:

コメントを投稿