▼目次
▼目標(ゴール)
AWS EC2上のDebian12(bookworm)にProxmox VE 8.3を構築します。
▼概念図
※※ 執筆中。。※※
▼用語
Proxmox VE (Proxmox Virtual Environment)
- KVM(フル仮想化)と LXC(軽量コンテナ仮想化)を組み合わせたハイブリッド仮想化基盤。
- ベース OS は Debian をカスタマイズした Linux ディストリビューション。
- ネットワーク管理には
ifupdown2
を使用し、/etc/network/interfaces
で設定を行う。
cloud-init
- クラウドインスタンス初回起動時の設定(ユーザー作成、ネットワーク設定、ソフトウェアインストールなど)を自動化するツール。
Linuxネットワーク管理ツール
- ifupdown / ifupdown2:
/etc/network/interfaces
ベースの設定。再起動でインターフェースが再初期化される。 - NetworkManager: GNOME などのデスクトップ環境向けに使われやすい。
systemctl restart NetworkManager.service
で再読み込み。 - systemd-networkd: systemd によるネットワーク管理で、設定ファイルは
/etc/systemd/network/
配下に置く。
▼システム要件
構成図
※※ 執筆中。。※※
使用バージョン
Proxmox VE
- バージョン: 8.3.1
root@proxmox:~# pveversion pve-manager/8.3.1/fb48e850ef9dde27 (running kernel: 6.1.0-23-cloud-amd64)
Debian
- バージョン: 12.8 (bookworm)
root@proxmox:~# cat /etc/debian_version 12.8
▼構築手順
cloud-init スクリプトの準備
EC2 インスタンスの起動と同時に Proxmox VE のインストールを自動実行するため、cloud-init スクリプトを作成します。
以下リポジトリにサンプルを公開しています。
github.com
EC2 インスタンスの設定・起動
【アプリケーションおよびOSイメージ(Amazonマシンイメージ)】にて、「Debian」を選択します。
【インスタンスタイプ】にて、「t3.small」を選択します。
メモリ 1 GiB のタイプではフリーズしたため、今回は t3.small (2 GiB) を使用しています。- 注意点
Proxmox VE 上で仮想マシンを起動したい場合は、ベアメタルインスタンス(〜.metal
)を使用する必要があります。 今回はインストールの検証が目的のためベアメタルではありません。下図は t3.small で Proxmox上にて VM を作成しようとした際に表示されるエラーです。(VM の起動はできないため注意)
- 注意点
【ネットワーク設定】のセキュリティグループ設定にて以下ポートを解放します。
- 22 (SSH用)
- 8006 (Proxmox Web コンソール用)
【ストレージを設定】にて、適宜ルートボリュームの容量や種類 (gp2, gp3 等) を設定します。
【高度な詳細】>【ユーザーデータ - オプション】にて、事前に作成した cloud-init スクリプトを貼り付けます。その後、EC2インスタンスを起動します。
起動後の cloud-init 実行確認
インスタンスへ SSH できるようになっても、裏で cloud-init が処理中の場合があります。以下コマンドでステータスを確認できます。
root@proxmox:~# cloud-init status status: running # 実行中の場合
root@proxmox:~# cloud-init status status: done # 完了
ログの内容は以下コマンドでリアルタイム確認可能です。
root@proxmox:~# tail -f /var/log/cloud-init-output.log
Proxmox VE へのログイン
- SSH 接続後、Proxmox VE の Web コンソール用に
root
ユーザのパスワードを設定します。root@proxmox:~# passwd New password: Retype new password: passwd: password updated successfully
Web コンソールへのアクセス
ブラウザで下記URLにアクセスします。
https://<インスタンスのパブリックIP>:8006
以下項目を入力して、ログインします。
- ユーザー名: root
- パスワード: ※上記で設定したパスワード
▼(参考)ベアメタルインスタンスでの構築
c5.metal
のインスタンスタイプにて構築を試してみました。
EC2上のProxmoxでVM起動
ISOなどディスクイメージをアップロードします。
アップロードしたISOファイルを用い、ベアメタル (
〜.metal
)上で VM の起動をした際の画面になります。(ベアメタルであれば Nested でのVM起動も実施可能です。)
注意点
Proxmox VE は ARM64 (AArch64) 非対応
動作させる際は x86-64 (x64) のインスタンスを選択する必要があります。
EC2インスタンス起動設定時には x86 と Arm インスタンスタイプがあり、Proxmox VE は x86 環境でのみ動作します。
NIC 名の注意
ens5
や enp125s0
など、インスタンスタイプや NIC デバイスによって命名が異なる場合があります。
https://github.com/tokoro10nu/PROXMOX_on_EC2のcloud-initスクリプトでは、以下記述のインターフェース名(「ens5」の部分)を変更する必要があります。
- PRIVATE_IP=$(ip addr show ens5 | grep inet | awk '{ print $2 }' | cut -d'/' -f1 | head -n 1) - echo "$PRIVATE_IP proxmox" >> /etc/hosts
▼参考
- Proxmox on EC2 (GitHub: thenickdude/proxmox-on-ec2)
- Proxmox on AWS 構築 (GitHub)
- Networkingサービス (Qiita)
- cloud-init (Qiita)
- イメージの入手 (OpenStack Docs)
- Proxmox VE 8.3 (Networld Blog)
- Proxmox, Debian バージョン確認 (nofu.jp)
- Proxmox とは (Qiita)
- Debian 最小構成 (Debian Official)
- シェルスクリプト, Ansible, cloud-init の違い (MMMCorp Blog)