概要
kickstart は ISO などから VM に OS をインストール際にそのインストールの設定を自動化するための仕組みです
まずは kickstart サーバを構築する必要があるので今回はサーバの構築まで行ってみました
環境
- macOS X 10.12.6
- Virtualbox 5.1.26 r117224 (Qt5.6.2)
- CentOS 7.3.1611
事前準備
今回は Mac 上の Virtualbox で進めていきます
なので、まず Virtualbox をインストールしましょう
もちろん他の仮想化環境や物理マシンでも問題ないです
kickstart サーバには CentOS サーバを採用します
なので、ISO ファイルを公式からダウンロードしましょう
今回は「CentOS-7-x86_64-Minimal-1611.iso」という ISO ファイルをダウンロードしました
kickstart サーバ用の CentOS の構築
Virtualbox で作業します
新規から VM を作成します
タイプに「Linux」を選択しバージョンに「Red Hat (64-bit)」を選択します
以下各設定項目になります
- メモリサイズは今回 2048MB にしました
- ハードディスクは「仮想ハードディスクを作成する」にしました
- ハードディスクのタイプは VDI にしました
- サイズのタイプは「可変サイズ」にしました
- ファイルの場所は好きな場所を選択してください、サイズは 8GB にしました
作成できたら「設定」から「ストレージ」で「コントローラ IDE 」が空になっているのを確認します
ここに事前にダウンロードしておいた ISO をマウントしておきます
あとは起動してコンソール画面から CentOS をインストールすれば OK です
設定する項目は殆どないと思います
自分は OS をインストールするパーティションと root のパスワードを設定しました
設定が完了したらインストールができるまで待ちましょう
※うまく NAT ネットワークに接続できない場合は Virtualbox の「環境設定」から「ネットワーク」で「NAT ネットワーク」と「ホストオンリーネットワーク」を追加しましょう
※ NAT 側がうまく接続できない場合は以下のコマンドを実行してみたください
nmcli con mod enp0s3 connection.autoconnect "yes"
- systemctl restart NetworkManager
- systemctl restart network
kickstart サーバの構築
では kickstart サーバを構築します
とは行っても https or https 経由で .ks ファイルを配信できる環境を構築すれば完了です
- yum -y update
- yum -y install httpd vim
ks ファイルの作成
次に .ks ファイルを作成します
各項目の設定はコメントで説明しています
必須のオプションもあればそうでないオプションもあります
別のオプションについては参考サイトにある RedHat の kickstart オプションの一覧を参照してください
- vim centos.ks
# 新規インストールします
install
# CD にマウントしてある ISO からインストールします
cdrom
# 言語を設定します
lang ja_JP.utf8
# キーボードレイアウトを設定します
keyboard us
# タイムゾーンを設定します
timezone Asia/Tokyo
# 認証オプションを設定します (必須)
auth --useshadow --passalgo=sha512
# selinux を無効にします
selinux --disabled
# iptables を無効にします
firewall --disabled
# 自動起動するサービスを指定します
services --enabled=NetworkManager,sshd
# インストール後再起動させます
reboot
# ブートローダオプションを指定します (必須)
bootloader --location=mbr --driveorder=sda
# パーティションをクリアします
clearpart --linux --drives=sda
# パーティション作成で確認を求められないようにします、これを指定しないと ISO からインストールする画面のシステムのインストール先を選択する画面で止まってしまいます
zerombr
# パーティションを自動で設定します
autopart
# ルートパスワードを設定します
# 「openssl passwd -1」コマンドでパスワードは生成できます
rootpw --iscrypted $1$kuGjySFy$1EqDH0PdmNx7fyDBTvyHN.
%packages --nobase --ignoremissing
@core
%end
ks ファイルの配信
では作成した ks ファイルを配信します
- cd /var/www/html
- cp centos.ks .
- systemctl httpd start
で curl などでアクセスしてファイルが取得できれば OK です
curl localhost/centos.ks
selinux, iptables firewalld の無効化
とりあえずテストなのでそれぞれ無効にしました
- vim /etc/selinux/config
SELINUX=disabled
- systemctl disable firewalld
動作確認
kickstart ファイルの配信準備ができたら、実際に CentOS のインストールを kickstart 経由で行ってみます
先ほどと同様に VM を 1 つ作成して ISO をマウントします
このとき先ほどとは違い kickstart サーバを指定します
タブを押すと以下のようにインストールコマンドを指定することができるので追加で kickstart サーバを指定します
- vmlinuz initrd=initrd.img ks=http://192.168.56.101/centos.ks
inst.stage2
の設定項目がある場合は削除して OK です
192.168.56.101 はホストオンリーアダプターに付与されている先ほど構築して kickstart サーバの IP になります
これでインストールを開始してみましょう
kickstart サーバを構築したときは対話的にインストールしていたのがなくなりすべて自動でインストールされると思います
試しに kickstart ファイルを複数用意して lang などの項目を別なものに変更して起動後に $LANG
などを確認してみると良いと思います
最後に
kickstart サーバを構築して CentOS のインストールの自動化を行ってみました
仕組み自体は設定ファイルを http で配信するだけなので簡単です
ただ、新たに構築する VM が kickstart サーバにアクセスできる必要があります
Github などで公開してグローバルからならどこでもつながるようにすることで解決する方法もあるようです
今回はパーティションなど細かい設定はほとんど行いませんでしたが、パーティションを細かく設定したり LVM 構成を組むこともできるようです
詳しくは RedHat の公式サイトにある kickstart のオプションを紹介しているドキュメントを確認してみてください
0 件のコメント:
コメントを投稿