CentOS7 以前と同様、CentOS8 も Kickstart によりインストールの自動化を行うことが可能です。 今回は CentOS8 における Kickstart の実行方法をメモしておきます。 尚、作業は vSphere 上の仮想マシンで行いました。
作業の流れ
Kickstart を使った展開方法には大きく以下に分けられます。
- カスタマイズした Kickstart ファイルをメディアに埋め込んでしまう方法 (外部 Web サーバが不要)
- カスタマイズした Kickstart ファイルを外部 Web サーバに用意する方法 (外部 Web サーバが必要)
「2.」の方法は別途、Web サーバが必要になってしまいますが、Kickstart の内容を書き換えたい場合等に対応しやすく、柔軟です。 今回は「2.」の方法をとります。 この場合、作業は以下の流れで進めます。
- Kickstart ファイルを用意する
- Web サーバ上に Kickstart ファイルを配置する
- CentOS8 のインストーラから Web サーバ上の Kickstart ファイルを指定し、起動させる
Kickstart 用ファイルの作り方
Kickstart ファイルを作成する場合、最も簡単なのは「一度、手動でインストールし、/root/anaconda-ks.cfg
を利用する」ことです。 インストールが完了すると、インストール時に指定されたパラメータが /root/anaconda-ks.cfg
に記録されます。 このファイルをベースに、カスタマイズして流用するのが最も手軽です。
Kickstart ファイルを作成した後、「実際にインストールを試しては → デバッグ」は非常に面倒です。 こういった場合は ksvalidator
を使うことで Kickstart ファイルの文法を確認することが出来ます。 ksvalidator
は以下のように実行することでインストール出来ます。
dnf -y install pykickstart
今回はバージョン 3.16.4 がインストールされました。
# dnf info pykickstart
Last metadata expiration check: 0:00:12 ago on Tue Dec 24 11:20:14 2019.
Installed Packages
Name : pykickstart
Version : 3.16.4
Release : 1.el8_0
Arch : noarch
Size : 45 k
Source : pykickstart-3.16.4-1.el8_0.src.rpm
Repo : @System
From repo : AppStream
Summary : Python utilities for manipulating kickstart files.
URL : https://github.com/dcantrell/pykickstart
License : GPLv2 and MIT
Description : Python utilities for manipulating kickstart files. The Python 2 and 3 libraries
: can be found in the packages python-kickstart and python3-kickstart
: respectively.
ksvalidator
は以下のように実行します。
ksvalidator ks.cfg
Kickstart ファイルのカスタマイズ例
カスタマイズした Kickstart ファイルの例は以下の通りです。 ポイントは下記です。
- テキストモードでインストールする (グラフィカルインストールは使わない)
- キーマップは
JP
- 言語は
en_US.UTF-8
root
ユーザのパスワードはPASSWORD
user
ユーザを作成、パスワードはPASSWORD
- SELinux は無効化する
- firewalld は無効化する
- タイムゾーンは
Asia/Tokyo
- NTP サーバは Google Time Server を指定 (
216.239.35.12
と216.239.35.8
) - パーティションは下記とする
- LVM は使わない
- ファイルシステムは
xfs
/home
ディレクトリは別パーティションにしない
- 最小構成インストールに加え、以下のパッケージをインストールする
- bash-completion
- bind-utils
- git
- lsof
- tcpdump
- tmux
- tree
- unzip
- vim-enhanced
- wget
- zip
- 全パッケージアップデートする
- dnf キャッシュを削除する
- インストールメディアを排出してから再起動する
具体的な Kickstart ファイルの内容は以下の通りです。 ファイルが用意出来たら予め用意しておいた Web サーバにアップロードしておきます。
#version=RHEL8
ignoredisk --only-use=sda
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --none --initlabel
# Instllation mode
text
repo --name="AppStream" --baseurl=file:///run/install/repo/AppStream
# Use CDROM installation media
cdrom
# Keyboard layouts
keyboard --vckeymap=jp --xlayouts='jp'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=ens192 --ipv6=auto --activate
network --hostname=localhost.localdomain
# Root password
rootpw PASSWORD
# Run the Setup Agent on first boot
firstboot --enable
# Do not configure the X Window System
skipx
# SELinux
selinux --disabled
# System services
services --enabled="chronyd"
services --disabled="firewalld"
# System timezone
timezone Asia/Tokyo --isUtc --ntpservers=216.239.35.12,216.239.35.8
user --groups=wheel --name=user --password=PASSWORD --gecos="user"
# Disk partitioning information
autopart --fstype=xfs --nohome --nolvm
%packages
@^minimal-environment
bash-completion
bind-utils
git
lsof
tcpdump
tmux
tree
unzip
vim-enhanced
wget
zip
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
%post --log=/root/ks-post-anaconda.log
set -x
dnf -y update
dnf clean all
%end
# Reboot
reboot --eject
実際に Kickstart でインストールする
ここからは CentOS8 インストールメディアを挿入した仮想マシンを作成し、実際に Kickstart を使ってインストールを進めます。
Step.1
仮想マシンの起動オプション設定は仮想マシンの 設定の編集
→ 仮想マシン オプション
→ 起動オプション
から確認することが出来ます。 デフォルトは EFI になっているはずです。 CentOS8 のインストーラは「BIOS で起動した場合」と「EFI で起動した場合」で起動画面が異なります。 今回は EFI で起動させるものとします。
Step.2
仮想マシンを CentOS8 のインストールメディアから起動した場合、Step.1 で説明した起動オプション (EFI or BIOS) によって以下のように起動画面が異なります。
EFI
EFI の場合は e
を押して起動オプションを指定することになります。
BIOS
BIOS の場合は TAB
を押して起動オプションを指定することになります。
Step.3
デフォルトでは中段の Test this media & install CentOS Linux 8.0.1905
が選択されているはずです。 最上部の Install CentOS Linux 8.0.195
がハイライトされた状態で e
を押し、次へ進みます。
Step.4
起動オプションが表示されます。
以下画像の赤線部分のように Kickstart 用設定ファイルが配置されている位置を指定します。 ks=~
部分の追記が完了したら、Ctrl + x
を押してインストールを開始します。 Kickstart 内でインストールが完了したら再起動するように指定してある為、しばらくすると自動的に再起動し、Kickstart で指定したパラメータでインストールされた CentOS8 が起動してくるはずです。
Kickstart の URL を入力する際、「日本語キーボードを使っているにも関わらず、US キーマップになっていて記号が上手く出来ない」場合は以下を参考に記号を入力してください。
- 「
=
」… キーボード右上、(1) の位置にある「へ
」ボタンをそのまま押す - 「
:
」…Sfhit
を押しながらキーボード右側、(2) の位置にある「れ
」ボタンを押す
インストール後の確認
今回は 20GB のディスクを割り当てましたが、インストール後のパーティションは以下の状態になっていました。 EFI システムなので /boot/efi
が作成されたことが分かります。 また、Kickstart で指定した通り、ファイルシステムは xfs
で作成されています。
# mount | grep sda[1-4]
/dev/sda4 on / type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda2 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)
# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 2097148 0 -2
ディスクの割当 (≒ 使用状況) は以下のようになっていました。 こちらも Kickstart で指定した通り、/home
は作成されていません。
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 982M 0 982M 0% /dev
tmpfs 995M 0 995M 0% /dev/shm
tmpfs 995M 17M 979M 2% /run
tmpfs 995M 0 995M 0% /sys/fs/cgroup
/dev/sda4 17G 1.6G 15G 10% /
/dev/sda2 1014M 170M 845M 17% /boot
/dev/sda1 599M 6.8M 593M 2% /boot/efi
tmpfs 199M 0 199M 0% /run/user/0
コメント