OSテンプレートとISO
管理者画面の場所: Services › Virtual Machines › Template(
/vm/templates)。Proxmoxテンプレートは Infrastructure › Cloud provider › Providers › (cluster) › Clusters でクラスターごとに一覧表示されます。
動作内容
テンプレートは、新しいVMの起動元となるオペレーティングシステムイメージです。NexCMPはイメージ自体を保存せず、CloudStackが報告する情報(準備完了、お勧めテンプレート)やProxmoxクラスター用にリストした内容を読み取り、顧客向けの名称、アイコン、ログインユーザーを指定して販売するものを選択できるようにします。このページでは、パスワードログイン、ライブCPUおよびRAMスケーリング、スワップファイル、プランサイズまで拡張するルートディスクなど、NexCMPで正常に動作するイメージの準備方法について説明します。
要件
| 項目 | 要件 |
|---|---|
| CloudStack template builder | libguestfs-tools(virt-customize、virt-sparsify、guestfish)、qemu-utils、curlを備えた約5 GBの空きディスクを持つLinuxマシン。KVMやrootは必要ありません。パッケージのインストールにはインターネットアクセスが必要です(または --offline でビルドします)。 |
| ビルダーの場所 | パネルサーバー上の /opt/nexcmp/releases/<version>/share/templates/ 内のすべてのリリースに同梱されています。そこで実行する必要はありません。フォルダーを任意のLinuxマシンにコピーしてください。 |
| Web server | 作成した .qcow2 ファイルを公開するために、CloudStackのセカンダリストレージVMがアクセスできる任意のHTTP(S)サーバー。インターネットからアクセスできる必要はありません。 |
| CloudStack | テンプレートを登録できる権限を持つアカウント、およびゾーンと一致するOSタイプのID。 CloudStack を参照してください。 |
| Proxmox VE | QEMUゲストエージェントを搭載したCloud-initテンプレートVM(OSおよびノードごとに1つ)。Proxmox VEを参照してください。 |
| 依存関係 | 最初に接続された CloudStack または Proxmox VE。 |
インフラストラクチャの準備
CloudStack:テンプレートのビルド
サポートされているベースイメージ(変更を加える前に、ベンダーイメージがダウンロードされ、チェックサムが検証されます):
| Image | --distro | Login user |
|---|---|---|
| Ubuntu 22.04 | ubuntu-22.04 | ubuntu |
| Ubuntu 24.04 | ubuntu-24.04 | ubuntu |
| Debian 12 | debian-12 | debian |
| Rocky Linux 9 | rocky-9 | rocky |
その他のディストリビューション: distros.conf に行を追加します(イメージURL、チェックサムファイル、ファミリー deb または rpm)。
ビルダーをビルドマシンにコピーして実行します:
bashcp -r /opt/nexcmp/releases/<version>/share/templates ~/templates && cd ~/templates ./build-template.sh --distro ubuntu-24.04 --version v7 --work ./outパネルに登録するオプションの初回起動監視エージェント(HTTPSのみ)を組み込むには
--panel-url https://cloud.example.comを追加します。追加しない場合、エージェントは追加されません。その他のオプション:ダウンロードしたイメージを使用する場合は--base <file>、パッケージのインストールをスキップする場合は--offline。結果として
out/ubuntu-24.04-v7.qcow2とその.sha256が生成されます。ビルドの終了時にverify-image.shが実行され、完成したイメージが読み取り専用で検査され、不適切なイメージの場合は拒否されます(.unverifiedとして保持されます)。いつでも再実行できます:./verify-image.sh out/ubuntu-24.04-v7.qcow2 --no-agent。
ビルダーがイメージに組み込む内容:
| 項目 | Why |
|---|---|
qemu-guest-agent | CloudStackはVMにCPUやIPについて問い合わせを行い、スナップショットのために quiesce(静止)させることができます。 |
CloudStackデータソースを使用するcloud-init、毎回の起動時のset_passwords、SSHパスワードログイン | 生成されたパスワードは仮想ルーターから取得され、Reset passwordが機能します。 |
| ホット追加されたCPUおよびRAM用のudevルール | ホット追加されたvCPUとRAMが自動的にオンラインになるため、ライブスケーリングとAuto Scalingが機能します。 |
| スワップファイルサービス | ディスクの拡張後、RAMの50%と4 GiBの小さい方の/swapfileを作成します。touch /etc/cmp-swap.disabledで無効になります。 |
cloud-init growpart および resizefs | 初回起動時に、小さいルートディスクがプランのディスクサイズまで拡張されます。 |
| 空のmachine-id、SSHホストキーなし | すべてのVMが独自のアイデンティティを取得します。 |
テンプレート名を<OS> <version> <vN>にする
NexCMPは、名前がvNまたはvN.Mで終わり、Nが6以上のテンプレートに対してAuto Scalingを有効にします(Ubuntu 24.04 v7、Rocky Linux 9 v7.1)。ビルダーは--versionに対してこれを強制します。正確な出力名でテンプレートを登録してください。
ファイルを公開し、CloudStackに登録します。ビルドが出力したSHA-256を使用し、ファイルの書き込みが完全に完了してから登録してください:
bashcmk list ostypes keyword="Ubuntu 24.04" filter=id,description cmk register template name="Ubuntu 24.04 v7" displaytext="Ubuntu 24.04 v7" \ url=https://files.example.com/ubuntu-24.04-v7.qcow2 zoneid=<zone-id> format=QCOW2 hypervisor=KVM \ ostypeid=<os-type-id> passwordenabled=true sshkeyenabled=true isdynamicallyscalable=true \ requireshvm=true isextractable=false ispublic=true isfeatured=true \ checksum="{SHA-256}<sha256 of the file>" \ details[0].guest.cpu.mode=host-passthrough details[0].rootDiskController=osdefaultpasswordenabled=trueにより、CloudStackでVMのパスワードを生成できるようになります。isdynamicallyscalable=trueにより、ライブスケーリングが可能になります。- 現在のRockyおよびAlmaイメージの起動には
host-passthroughが必要です。osdefaultはディスクコントローラーの移植性を維持します。
テンプレートが Download Complete / Ready に達するまで待ちます。
ベンダーイメージは小さな仮想サイズ(UbuntuおよびDebianは約3.5 GiB、Rockyは10 GiB)を維持します。プランのディスクはテンプレートのディスクより小さくできないことに注意してください。
Proxmox VE: テンプレートを作成する
ゲストエージェントをインストールし、rootログインを有効にした状態で、デプロイ先のすべてのノード上にOSごとのcloud-init VMテンプレートを作成し、それをos-key=vmidとして登録します。完全なコマンドはProxmox VEにあります。上記のCloudStackビルダーはProxmox用ではありません。これはCloudStackデータソース用のcloud-initを設定します。
ISO
お客様は、Imagesモジュール(CloudStack)または専用サーバーモジュールを通じて独自のISOをマウントします。これらは、このページのOSテンプレートとは別物です。ModulesおよびDedicated serversを参照してください。
NexCMP での接続
Services › Virtual Machines › Templateを開きます。Sync nowをクリックするか、最大15分お待ちください。同期により、CloudStackで準備完了かつフィーチャーされているテンプレートが追加されます。

新しいテンプレートのEditをクリックし、お客様に表示される内容を設定します:
項目 入力例 お客様向け表示名 Ubuntu 24.04 LTSOS family ubuntu(アイコンとデフォルトユーザー)Version 24.04Login username ubuntu(Windows:Administrator; その他:root)Icon 画像URL、パス、または名前 順序 10有効 On vCPU/RAMホットプラグ(ライブスケール) Auto by name (v6 or later)、Yes、または No (needs a restart) 
テンプレートを有効にします。CloudStackにリストされなくなったテンプレートは自動的に非表示になり(設定されている場合はTelegramでアラートが通知されます)、NexCMPから削除されることはありません。
テンプレートを新しいビルドに置き換える
販売中のテンプレートで More › Replace with new version を使用します。新しく、準備が完了しており、現在無効になっているテンプレートを選択します。これにより、販売中のエントリは新しいビルドを指すようになり、名前、順序、アイコンが保持されます。古いエントリは切り戻し用の手段として無効化されます(元に戻すには、新しいエントリで Replace を使用します)。実行中のVMは変更されません。新しいビルドのOSファミリーが異なる場合は、最初に確認チェックボックスをオンにしてください。
確認
- 行には ready と、名前が
vNで N が 6 以上のビルドの場合は CPU hot-plug: supported が表示されます。 - テンプレートからテストVMを1台デプロイし、VM内部を確認します。
- ポータルに表示されるパスワードでログインできること。
df -h /にプランのディスクサイズが表示されること。- ライブスケール(再起動なしの Change plan)の実行後、
nprocとfree -mが増加すること。 swapon --showに/swapfileがリストされること(スワップに2 GiB未満の空きを加えた容量未満のディスクはスキップされます)。systemctl is-active qemu-guest-agentがactiveを出力すること。
- エージェントを組み込んだ場合、初回起動の1分後にパネルの監視対象ホストにVMが表示されます。VMには独自のパブリックIPが必要です。パネルはパブリック送信元IPによってVMを認識します。
制限と注意点
- ビルダーはLinux専用であり、Linuxイメージを構築します。(Windowsなどの)他のイメージは、他の手段で CloudStack に登録できます。NexCMP は CloudStack が報告する内容を一覧表示します。
- amd64エージェントのみが同梱されており、他のアーキテクチャではエージェントのインストールがスキップされます。
- イメージは
guestfishでチェックされますが、ビルダーによって起動されることはありません。新しいイメージを販売する前に、必ずテストVMを1台デプロイしてください。 - 初回起動前に
touch /etc/cmp-agent.disabledを使用して、1台のVMでエージェントをスキップします。後からsystemctl disable --now cmp-agent cmp-agent-install; rm -rf /etc/cmp-agent /usr/local/bin/cmp-agentで削除し、管理者コンソールでエージェントを削除してください。
トラブルシューティング
| 症状 | 原因 | 対処法 |
|---|---|---|
virt-customize がパッケージのダウンロードに失敗する | ビルドマシンにアウトバウンドネットワークがない | そのマシンのDNSまたはプロキシを修正するか、すでにパッケージが含まれているベースイメージで --offline を使用してビルドします。 |
libguestfs: error: /usr/bin/supermin exited with error status 1 | ホストカーネルが現在のユーザー(Ubuntu)から読み取り可能になっていない | sudo chmod +r /boot/vmlinuz*、またはビルドをrootとして実行します。 |
| チェックサムが異なる、またはベンダーのイメージが存在しなくなった | ベンダーが「latest」ファイルを移動している | ご自身でイメージをダウンロードし、ベンダーのチェックサムファイルと照合して確認した上で、--base で渡してください。 |
| Rocky: より新しいXFSをマウントできない | ホストカーネルが古すぎる | 新しいカーネルを搭載したマシンでビルドします。 |
--version must be v6 or higher | 名前が vN(N は 6 以上)である必要がある | --version v7 を使用します。 |
--panel-url must be a plain https:// URL | エージェントがダウンロードされてrootとして実行されるため、プレーンHTTPが拒否される | スペース、クォート、クエリ文字列を含まない https:// URLを使用します。 |
| テンプレートが not ready のままになる | CloudStack のダウンロードが完了していない | Download Complete を待ち、セカンダリストレージVMがそのURLに到達できることを確認します。 |
| 行に no-pass が表示される | テンプレートが passwordenabled=true なしで登録された | そのフラグを指定して再度登録します。 |
| CPUホットプラグが unsupported と表示される | 名前が vN(N は 6 以上)で終わっていない | テンプレートを名前変更するか、イメージにudevルールがある場合は編集でvCPU/RAM hot-plugをYesに設定してください。 |
| 初回の接続後に「Empty template list」が表示される | 同期が実行されていない | Sync now をクリックするか(ワーカーが実行されている必要があります)、15分ごとのサイクルを待ちます。 |