同一構成のLinuxを複数台構築する際、同じ設定値を台数分入力する必要があります。
Linuxではこの問題を解決する便利なツール 「Kickstart」 が備わっています。
このツールを利用することで手間や時間を掛けずに、またミスなく同一のLinuxを構築することができます。
今回は基本編として、CentOS7をDVDメディアからインストールすることを想定した利用方法です。
1. Configファイルの作成方法
Configファイルとは、インストール時に入力する設定情報を記載したファイルのことです。
まずはこのConfigファイルを作成します。
Configファイルの作成方法は大きく3つあります。
- ツールを使って作成
- 稼働中のシステムから作成
- 1台目のマシンの構成ファイルを利用
場面に応じて使い分けると良いかと思います。
なお、「A.」 と 「B.」 は専用ツールを利用するので以下の操作にてツールをインストールしてください。
# yum install system-config-kickstart
A. ツールを使って作成
キックスタート設定ツールを起動させるために以下コマンドを入力します。
# system-config-kickstart
以下のツールが起動します。
各項目のパラメータを設定します。
[基本設定] | |
デフォルトの言語 | Japanese - 日本語 |
タイムゾーン | Asia/Tokyo |
キーボード | Japanese |
rootパスワード | 適宜設定 |
[インストール方法] | |
インストール方法 | 新規インストールの実行 |
インストール源 | CD-ROM |
[ブートローダーオプション] | |
インストールタイプ | 新しいブートローダーをインストール |
GRUBオプション | (設定不要) |
インストールオプション | マスターブートレコード(MBR)にブートローダーをインストール |
[パーティション情報] | |
マスターブートレコード | マスターブートレコードを消去 |
パーティション | 全ての既存パーティションを削除 |
ディスクラベル | ディスクラベルを初期化 |
レイアウト | (設定不要) |
[ネットワーク設定] | |
デバイス | enp0s3 |
ネットワークタイプ | DHCP |
[認証] | |
認証設定 | シャドウパスワードを使う(SHA512) |
[ファイアーウォール設定] | |
SELinux | 無効化 |
セキュリティレベル | ファイアーウォールの無効化 |
[ディスプレイ設定] | |
ディスプレー設定 | グラフィカル環境をインストール |
[パッケージの選択] | |
筆者の環境では、エラーメッセージが表示されて選択ができませんでした。(調査中) | |
[インストール前のスクリプト] | |
設定なし | |
[インストール後のスクリプト] | |
設定なし |
必要な項目をすべて入力しましたら、メニューの [ファイル] - [保存] でConfigファイルを保存してください。
B. 稼働中のシステムから作成
コマンドを実行することで稼働中のシステムをもとにしたConfigファイルを作成できます。
ただし、LVMの設定がConfigファイルに反映されないため、手動で追記する必要があります。
# system-config-kickstart --generate ks.cfg
C. 1台目のマシンの構成ファイルを利用
CentOSを手動でインストールすると、root のホームディレクトに anaconda-ks.cfg が保存されます。
このファイルをそのままConfigファイルとして利用します。
# ls /root
anaconda-ks.cfg
このConfigファイルは上記2つの作成方法とは違いLVMの設定も含まれています。
今回は、下記サーバ環境のConfigファイルを作成しました。
パーティション | |
/boot | 500MB |
LVM物理ボリューム | /boot以外の全てを使用 |
/ | 20GB |
/var | 20GB |
/home | 30GB |
swap | 2GB |
セキュリティ | |
ファイアーウォール | 無効 |
SELinux | 無効 |
インストール後のスクリプト | |
追加 | gnome-initial-setup停止 |
Configファイルはこちら。
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=jp --xlayouts='jp'
# System language
lang ja_JP.UTF-8
# Network information
network --bootproto=dhcp --device=enp0s3 --ipv6=auto --activate
network --hostname=localhost.localdomain
# Service
firewall --disabled
# SELinux disabled
selinux --disabled
# Root password
rootpw --iscrypted xxxxxxxxxxxxxxxxxxxxx ←暗号化したrootのパスワード。適宜書き換えてください。
# System timezone
timezone Asia/Tokyo --isUtc
# X Window System configuration information
xconfig --startxonboot
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information(MB)
part /boot --fstype="xfs" --ondisk=sda --size=500
part pv.155 --fstype="lvmpv" --ondisk=sda --size=1 --grow
#volgroup centos --pesize=4096 pv.155
volgroup centos pv.155
logvol /home --fstype="xfs" --size=30720 --name=home --vgname=centos
logvol swap --fstype="swap" --size=2048 --name=swap --vgname=centos
logvol / --fstype="xfs" --size=20480 --name=root --vgname=centos
logvol /var --fstype="xfs" --size=20480 --name=var --vgname=centos
%packages
@^graphical-server-environment
@base
@compat-libraries
@core
@desktop-debugging
@development
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@multimedia
@print-client
@x11
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
%post
mkdir -p /etc/skel/.config /root/.config && touch /etc/skel/.config/gnome-initial-setup-done /root/.config/gnome-initial-setup-done
%end
reboot --eject
root の暗号化したパスワードはこちらのコマンドで生成できます。
# openssl passwd -1
Password: パスワードを入力します。
Verifying - Password: 再度パスワードを入力します。
$1$CGadzN4C$jqP7aNGJtvT9CwROe1R0o1
$1 から始まる文字列が暗号化したパスワードです。
なお、記述内容をチェックする便利なコマンドがありますので、Configファイルをカスタマイズした際は事前にチェックすることをお勧めします。
記述に間違いがなければコマンドを実行しても何も表示されませんが、間違いがあると以下のように教えてくれます。
# ksvalidator ks.cfg
以下の問題が kickstart ファイルの 59 行目で発生しました。
kickstart セクション %packages は %end で終了していません。
2. Kickstartで自動インストール
CentOS7のインストーラーをDVDドライブから起動します。
以下の画面が表示されたら [Esc]キーを押下します。
boot: プロンプトが表示されたら以下を入力します。
boot: linux ks=http://192.168.0.1/ks.cfg
DHCP環境でない場合はネットワーク設定も入力します。
boot: linux ks=http://192.168.0.1/ks.cfg ip=192.168.0.2 gateway=192.168.0.254 netmask=255.255.255.0
あとはインストールが完了するまで待つだけです。
今回は HTTPサーバに公開したConfigファイルを指定しましたが、他にも指定方法がありますので環境に合わせてご使用ください。
- フロッピーディスク
ks=floppy:/ks.cfg (フロッピーディスクのフォーマットは vfat もしくは ext2 です)
- USBメモリ
ks=hd:sdb:/ks.cfg (環境によってデバイス名が異なる場合があります)
- FTPサーバ
ks=ftp://192.168.0.1/ks.cfg
- NFSサーバ
ks=nfs:192.168.0.1:/ks.cfg
お疲れさまでした。