VirtualBoxにおけるPXEとKickstartによるCentOS 7の自動インストール
Follow @venividivici830
前の投稿では、PXEによるインストーラーの起動を行った。
本投稿では、Kickstartによるインストール作業の自動化を行った。
Kickstartによるインストールの自動化と言うが、より正確には「PXEとKickstartによる」インストールの自動化である。
PXE(Preboot eXecution Environment)
- ネットワークブートを実現する仕組み
Kickstart
- OSのサイレントインストールを実現する仕組み
ネットワーク上のインストーラーを起動するのがPXEの仕事で、インストーラーの操作を自動化するのがKickstartの仕事。
2つを組み合わせることで、下記のようにインストールを自動化できる。
普通のインストール
DVDを挿入してインストーラーを起動→GUIを操作してインストールを進める
PXEとKickstartによるインストール
マシンの電源を入れる → PXEがネットワーク上のインストーラーを起動 → Kickstartがインストールを自動的に進める
以下、下記のサイトの通りPXEサーバーが構築されていることを前提とする。
PXEにより、VirtualBoxでCentOS 7のインストーラーを起動した(図で解説あり)
PXEサーバーが設定されていれば、Kickstartの設定は比較的簡単。
下記を行えば良い。
キックスタートファイルの作成26.3. キックスタート構文の参考資料
26.2. キックスタートを使ったインストールの実行方法
ここでは、1からキックスタートファイルを作成せず、手動でインストールしたマシンに自動的に保存されるキックスタートファイルを用いた。
手動でインストールしたマシンでは、インストール中に選択された選択肢がすべて下記のファイルに保存される。
/root/anaconda-ks.cfg
これをコピーして流用することで、1からキックスタートファイルを作成せずに済む。
以下では、このanaconda-ks.cfgをコピーして用いた。
なお、キックスタートファイルは、ksvalidatorコマンドで検証できる。
ksvalidatorは、pykickstartパッケージに含まれる。
/etc/exportsには、前の投稿で設定した内容に加えて、下記を追記した。
/var/share/kickstart_files 192.168.11.0/24
起動オプションの詳細は、公式ドキュメントの第22章 起動オプションに記載がある。
PXE サーバーの設定時に、ブートローダー設定ファイルに起動オプションを追加することができる。
よって、PXEの設定ファイルに、上で配置したキックスタートファイルをinst.ksで指定すればよい。
下記の通り編集。
192.168.11.77は、前の投稿で作成したPXEサーバーのIPアドレス。
赤字以外の設定についても、前の投稿を参照。
仮想マシンの設定、システム > マザーボードから、起動順序でネットワークにチェックを入れ、優先度を一番上にした。
内部ネットワークのネットワークアダプターを追加した。
これで、仮想マシンを起動すると、インストールが進み、下図のようにインストールが完了した。
failed to fetch kickstart from
Kickstart file /run/install/ks.cfg is missing
Pane is dead
現在は専用のツールを使うらしい。
第29章 現在のシステムのアップグレード
インストールがある程度まで進めば、Alt+Tab(Macではoption+tab)でshellに切り替えることができ、/tmp/anaconda.logを確認できた。
前の投稿では、PXEによるインストーラーの起動を行った。
本投稿では、Kickstartによるインストール作業の自動化を行った。
Kickstartによるインストールの自動化と言うが、より正確には「PXEとKickstartによる」インストールの自動化である。
PXEとKickstart
2つは別の技術。PXE(Preboot eXecution Environment)
- ネットワークブートを実現する仕組み
Kickstart
- OSのサイレントインストールを実現する仕組み
ネットワーク上のインストーラーを起動するのがPXEの仕事で、インストーラーの操作を自動化するのがKickstartの仕事。
2つを組み合わせることで、下記のようにインストールを自動化できる。
普通のインストール
DVDを挿入してインストーラーを起動→GUIを操作してインストールを進める
PXEとKickstartによるインストール
マシンの電源を入れる → PXEがネットワーク上のインストーラーを起動 → Kickstartがインストールを自動的に進める
Kickstartの設定
Red Hatの公式ドキュメントを参考。以下、下記のサイトの通りPXEサーバーが構築されていることを前提とする。
PXEにより、VirtualBoxでCentOS 7のインストーラーを起動した(図で解説あり)
PXEサーバーが設定されていれば、Kickstartの設定は比較的簡単。
下記を行えば良い。
- キックスタートファイルの作成
- キックスタートファイルの配置
- PXE設定にキックスタートファイルの場所を記載
キックスタートファイルの作成
キックスタートファイルの構文は、下記の公式ドキュメントに詳しい。キックスタートファイルの作成26.3. キックスタート構文の参考資料
26.2. キックスタートを使ったインストールの実行方法
ここでは、1からキックスタートファイルを作成せず、手動でインストールしたマシンに自動的に保存されるキックスタートファイルを用いた。
手動でインストールしたマシンでは、インストール中に選択された選択肢がすべて下記のファイルに保存される。
/root/anaconda-ks.cfg
これをコピーして流用することで、1からキックスタートファイルを作成せずに済む。
以下では、このanaconda-ks.cfgをコピーして用いた。
なお、キックスタートファイルは、ksvalidatorコマンドで検証できる。
ksvalidatorは、pykickstartパッケージに含まれる。
yum -y install pykickstart ksvalidator /var/share/kickstart_files/CentOS7.6.1810.cfg
キックスタートファイルの配置
前の投稿でインストールソースを配置するために作ったnfsサーバー上に、キックスタートファイルを置くことにする。
キックスタートファイルを置くためのディレクトリー/var/share/kickstart_filesを作成し、この中にanaconda-ks.cfgをコピーし、リード権限を与えた。
そして、/etc/exportsを編集し、NFSサーバーを再起動することで、/var/share/kickstart_filesを公開した。
mkdir /var/share/kickstart_files cp anaconda-ks.cfg /var/share/kickstart_files/CentOS7.6.1810.cfg chmod o+r /var/share/kickstart_files/CentOS7.6.1810.cfg
vi /etc/exports
systemctl restart nfs-server
/etc/exportsには、前の投稿で設定した内容に加えて、下記を追記した。
/var/share/kickstart_files 192.168.11.0/24
PXE設定にキックスタートファイルの場所を記載
キックスタートを使ったインストールを開始するには、インストールシステムの起動時に起動オプション (inst.ks=location) を使用する。起動オプションの詳細は、公式ドキュメントの第22章 起動オプションに記載がある。
PXE サーバーの設定時に、ブートローダー設定ファイルに起動オプションを追加することができる。
よって、PXEの設定ファイルに、上で配置したキックスタートファイルをinst.ksで指定すればよい。
vi /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
下記の通り編集。
default centos7.6.1810
prompt 1
timeout 600
display boot.msg
label centos7.6.1810
menu label ^Install system
menu default
kernel images/CentOS7.6.1810/vmlinuz
append inst.ks=nfs4:192.168.11.77:/var/share/kickstart_files/CentOS7.6.1810.cfg initrd=images/CentOS7.6.1810/initrd.img ip=dhcp inst.repo=nfs:192.168.11.77:/var/share/installation_source
192.168.11.77は、前の投稿で作成したPXEサーバーのIPアドレス。
赤字以外の設定についても、前の投稿を参照。
インストール実行
VirtualBoxで、仮想マシンを作成した。仮想マシンの設定、システム > マザーボードから、起動順序でネットワークにチェックを入れ、優先度を一番上にした。
内部ネットワークのネットワークアダプターを追加した。
これで、仮想マシンを起動すると、インストールが進み、下図のようにインストールが完了した。
補足
以下、試行錯誤時や調査時のメモ。
エラー
上のchmod o+r /var/share/kickstart_files/CentOS7.6.1810.cfgの部分でやったように、キックスタートファイルに適切な権限を与えないと、下記のようなエラーで失敗した。failed to fetch kickstart from
Kickstart file /run/install/ks.cfg is missing
Pane is dead
キックスタートによるシステムのアップグレード
過去のバージョンでは、システムのアップグレードもキックスタートでできた様子。現在は専用のツールを使うらしい。
第29章 現在のシステムのアップグレード
ログファイル
公式ドキュメントによると、「キックスタートスクリプトおよびそのスクリプト実行によって生成されるログファイルは、インストールに失敗した場合の原因究明のデバッグの手助けとなるよう、すべて /tmp ディレクトリーに保存されます。」そうだ。インストールがある程度まで進めば、Alt+Tab(Macではoption+tab)でshellに切り替えることができ、/tmp/anaconda.logを確認できた。
コメント
コメントを投稿