【RHEL9】Proxmox VEにRHEL9をKickstartで自動インストールする

【RHEL9】Proxmox VEにRHEL9をKickstartで自動インストールする

はじめに

Proxmox VE上にRHEL9を検証用VMとして作るとき、毎回インストール画面で言語、ディスク、ネットワーク、パッケージを選ぶのは少し面倒だ。

この記事では、RHELの自動インストール機能であるKickstartを使って、Proxmox VE上にRHEL9の最小構成 VM を作成する。

目的は「凝った構成を作ること」ではなく、最小構成でログイン可能なRHEL 9を再現性高く作ることだ。

今回作るもの

  • Proxmox VE上のRHEL 9VM
  • インストール方式はKickstart
  • ネットワークはDHCP
  • パッケージ構成はMinimal Install
  • rootログインは有効
  • インストール中の表示言語は英語
  • インストール後のOS ロケールは日本語

インストール中の言語を英語にしているのは、日本語表示にすると環境によってインストーラー画面で文字化けすることがあるためだ。OS インストール後に ja_JP.UTF-8 へ切り替える。

環境

項目
Proxmox VE9.1.1
Proxmox 管理 URLhttps://192.168.11.99:8006
Proxmox ノード名pve
RHELRHEL 9.7
RHEL ISOrhel-9.7-x86_64-dvd.iso
VM 名RHEL9-Autodeploy
VM ID101
CPU2 cores
メモリ4096 MiB
ディスク40 GiB
ISO ストレージlocal
VM ディスクストレージlocal-lvm
ネットワークDHCP
Kickstart 配信端末192.168.11.170
タイムゾーンAsia/Tokyo
キーボード日本語

Red Hat のリリース表では、2026-05-09 時点の RHEL 9最新版はRHEL 9.7 だ。

参考:

必要なもの

  • Proxmox VE
  • RHEL 9.7 x86_64 DVD ISO
  • Red Hatアカウント
  • Kickstartファイル
  • KickstartをHTTP 配信できる端末

今回は手動寄りの手順にするため、Packer や Terraform は使わない。Proxmox の GUI で VM を作り、起動時に Kickstart の URL を渡す。

RHEL ISOを用意する

Red Hat Customer Portal から RHEL 9.7 の x86_64 DVD ISO をダウンロードする。

ファイル名の例:

rhel-9.7-x86_64-dvd.iso

ダウンロードした ISO は Proxmox の ISO ストレージにアップロードする。

Proxmox の画面では、一般的に次の場所からアップロードできる。

  1. Proxmoxにログイン
  2. 左ペインで対象ノードを選択
  3. ISOを保存するストレージを選択
  4. ISO Imagesを開く
  5. UploadからRHEL ISOをアップロード

Kickstartファイルを作成する

今回使うKickstartは以下だ。
rootパスワードには使用したいパスワードを記載する

rootpw –plaintext <検証用rootパスワード>

#version=RHEL9 text cdrom eula --agreed firstboot --disable reboot lang en_US.UTF-8 keyboard --vckeymap=jp --xlayouts='jp' timezone Asia/Tokyo --utc network --bootproto=dhcp --device=link --activate --onboot=on --hostname=rhel9-autodeploy.local rootpw --plaintext <検証用rootパスワード> selinux --enforcing firewall --enabled --ssh services --enabled=sshd,qemu-guest-agent,chronyd bootloader --location=mbr --append="crashkernel=auto" zerombr clearpart --all --initlabel autopart --type=lvm %packages @^minimal-environment chrony qemu-guest-agent vim-enhanced curl tar %end %post --log=/root/ks-post.log set -euxo pipefail localectl set-locale LANG=ja_JP.UTF-8 localectl set-keymap jp mkdir -p /etc/ssh/sshd_config.d cat > /etc/ssh/sshd_config.d/10-root-login.conf <<'EOF' PermitRootLogin yes PasswordAuthentication yes EOF systemctl enable qemu-guest-agent systemctl enable chronyd %end

今回は閉じた検証環境なので、Kickstart では検証用 root パスワードを平文で指定した。ただし、記事上では実値を伏せている。

現場で使う場合は、平文ではなく rootpw –iscrypted で SHA-512 crypt 形式のハッシュを指定する方が安全だ。

KickstartファイルをHTTPで配信する

RHEL インストーラーから Kickstart ファイルを取得できるよう、作業端末で簡易 HTTP サーバーを起動する。

Windows の PowerShell で実行する例だ。

Pythonなどは使わず、Windows標準で簡易 HTTP応答を返す。

PowerShellでKickstartファイルの配置先に移動する。自環境だと以下になる

cd C:\Users\kyoro\Documents\2026-05-09\rhel-kickstart-proxmox

簡易HTTP サーバーを起動する。

$listener = [System.Net.Sockets.TcpListener]::new([System.Net.IPAddress]::Any, 8080); $listener.Start(); Write-Host "Serving ks.cfg on http://192.168.11.170:8080/ks.cfg"; while ($true) { $client = $listener.AcceptTcpClient(); $stream = $client.GetStream(); $reader = [System.IO.StreamReader]::new($stream); while (($line = $reader.ReadLine()) -ne '') {}; $body = [System.IO.File]::ReadAllBytes((Join-Path (Get-Location) 'ks.cfg')); $header = [Text.Encoding]::ASCII.GetBytes("HTTP/1.1 200 OK`r`nContent-Type: text/plain; charset=utf-8`r`nContent-Length: $($body.Length)`r`nConnection: close`r`n`r`n"); $stream.Write($header, 0, $header.Length); $stream.Write($body, 0, $body.Length); $client.Close() }

実行結果:

Serving ks.cfg on http://192.168.11.170:8080/ks.cfg

初回起動時に Windows Firewallの許可ダイアログが出たため、同一 LANからアクセスできるよう許可した。

配信端末で取得できるか確認する。

curl http://192.168.11.170:8080/ks.cfg

確認結果:

StatusCode        : 200
StatusDescription : OK
Content           : #version=RHEL9

ここで ks.cfgの内容が表示されればOKだ。

インストール完了後にPowerShellウィンドウ自体を閉じて簡易HTTP サーバーを停止する

ProxmoxでVMを作成する

Proxmox VEの管理画面を開き、VMを作成する。

VM作成ウィザードでは、以下のように指定する。

画面設定
GeneralVM 名: RHEL9-Autodeploy
OSlocal から rhel-9.7-x86_64-dvd.iso を選択
System基本はデフォルト
DisksStorage: local-lvm、Size: 40 GiB。バスは VirtIO Block または SCSI
CPU2 cores
Memory4096 MiB
NetworkBridge は環境に合わせる。Model は VirtIO

起動パラメータにKickstart URLを指定する

VMを起動し、RHELの起動画面が表示されたら、Install Red Hat Enterprise Linux 9.7画面でtabを押す。

linux または linuxefiで始まる行の末尾に、次のようなパラメータを追加する。

inst.ks=http://192.168.11.170:8080/ks.cfg

編集後、エンターもしくはCtrl + x で起動する。

インストール後の確認

インストールが完了するとVMが再起動する。

rootでログインし、RHELのバージョンを確認する。

cat /etc/redhat-release

実行結果:

Red Hat Enterprise Linux release 9.7 (Plow)

ロケールとキーマップを確認する。

localectl status

実行結果:

System Locale: LANG=ja_JP.UTF-8 VC Keymap: jp X11 Layout: jp

つまずきポイント

Kickstartが読まれない

まず、インストーラーから Kickstart 配信端末に HTTP で到達できるかを疑う。

  • VM の NIC が接続されているか
  • Proxmox の Bridge が正しいか
  • DHCP でアドレスが取れているか
  • Windows Firewall などで 8080/TCP が遮断されていないか。初回起動時に許可ダイアログが出た場合は、同一 LAN からアクセスできるよう許可する
  • inst.ks= の URL が間違っていないか

rootでSSHログインできない

RHEL 9ではSSHの設定や認証方式によってroot ログインできないことがある。今回は検証用として以下を明示している。

PermitRootLogin yes PasswordAuthentication yes

本番環境ではrootのSSH ログインを避け、一般ユーザーとsudoを使う構成を検討したい。

まとめ

Kickstartを使うと、VM作成をかなり再現しやすくできる。

今回は手動寄りの構成にしたため、Proxmox GUIの操作感を残しながら、OSインストール部分だけを自動化した。

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *