TokoroTech

勉強した技術的なこと等まとめていってます!

【構築手順】AWS EC2上のDebian12(bookworm)にProxmox VE 8.3を構築

▼目次

▼目標(ゴール)

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 インスタンスの設定・起動

  1. 【アプリケーションおよびOSイメージ(Amazonマシンイメージ)】にて、「Debian」を選択します。

  2. 【インスタンスタイプ】にて、「t3.small」を選択します。
    メモリ 1 GiB のタイプではフリーズしたため、今回は t3.small (2 GiB) を使用しています。

    • 注意点
      Proxmox VE 上で仮想マシンを起動したい場合は、ベアメタルインスタンス(〜.metal)を使用する必要があります。 今回はインストールの検証が目的のためベアメタルではありません。下図は t3.small で Proxmox上にて VM を作成しようとした際に表示されるエラーです。(VM の起動はできないため注意)
  3. 【ネットワーク設定】のセキュリティグループ設定にて以下ポートを解放します。

    • 22 (SSH用)
    • 8006 (Proxmox Web コンソール用)
  4. 【ストレージを設定】にて、適宜ルートボリュームの容量や種類 (gp2, gp3 等) を設定します。

  5. 【高度な詳細】>【ユーザーデータ - オプション】にて、事前に作成した cloud-init スクリプトを貼り付けます。その後、EC2インスタンスを起動します。

起動後の cloud-init 実行確認

  1. インスタンスへ SSH できるようになっても、裏で cloud-init が処理中の場合があります。以下コマンドでステータスを確認できます。

    root@proxmox:~# cloud-init status
    status: running   # 実行中の場合
    
    root@proxmox:~# cloud-init status
    status: done      # 完了
    

  2. ログの内容は以下コマンドでリアルタイム確認可能です。

    root@proxmox:~# tail -f /var/log/cloud-init-output.log
    

Proxmox VE へのログイン

  1. SSH 接続後、Proxmox VE の Web コンソール用に root ユーザのパスワードを設定します。
    root@proxmox:~# passwd
    New password:
    Retype new password:
    passwd: password updated successfully
    

Web コンソールへのアクセス

  1. ブラウザで下記URLにアクセスします。

    https://<インスタンスのパブリックIP>:8006
    

  2. 以下項目を入力して、ログインします。

    • ユーザー名: root
    • パスワード: ※上記で設定したパスワード

▼(参考)ベアメタルインスタンスでの構築

c5.metalのインスタンスタイプにて構築を試してみました。

EC2上のProxmoxでVM起動

  1. ISOなどディスクイメージをアップロードします。

  2. アップロードしたISOファイルを用い、ベアメタル (〜.metal)上で VM の起動をした際の画面になります。(ベアメタルであれば Nested でのVM起動も実施可能です。)

注意点

Proxmox VE は ARM64 (AArch64) 非対応

動作させる際は x86-64 (x64) のインスタンスを選択する必要があります。 EC2インスタンス起動設定時には x86 と Arm インスタンスタイプがあり、Proxmox VE は x86 環境でのみ動作します。

NIC 名の注意

ens5enp125s0 など、インスタンスタイプや 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

▼参考

END