メインコンテンツにスキップ ナビゲーションにスキップ フッターにスキップ

実験的VM

rdc opsを使用して、開発およびテスト用のローカルVMクラスターをプロビジョニングします。

実験的VM

ワークステーション上にローカルVMクラスターをプロビジョニングし、開発やテストに使用できます。外部クラウドプロバイダーは不要です。

概要

rdc ops コマンドを使用すると、実験用 VM クラスターをローカルで作成・管理できます。これは CI パイプラインで統合テストに使用されているものと同じインフラストラクチャであり、実践的な実験にご利用いただけるようになりました。

ユースケース:

  • 外部VMプロバイダー(Linode、Vultrなど)なしでRediaccデプロイメントをテスト
  • リポジトリ設定をローカルで開発・デバッグ
  • 完全に分離された環境でプラットフォームを学習
  • ワークステーション上で統合テストを実行

プラットフォームサポート

プラットフォームアーキテクチャバックエンドステータス
Linuxx86_64KVM (libvirt)フルサポート
LinuxARM64KVM (libvirt)フルサポート
macOSARM (Apple Silicon)QEMU + HVFフルサポート
macOSIntelQEMU + HVFフルサポート
Windowsx86_64 / ARM64Hyper-V計画中

Linux (KVM) はlibvirtを使用し、ブリッジネットワーキングによるネイティブハードウェア仮想化を提供します。

macOS (QEMU) はAppleのHypervisor Framework(HVF)を搭載したQEMUを使用し、ユーザーモードネットワーキングとSSHポートフォワーディングにより、ネイティブに近いパフォーマンスを実現します。

Windows (Hyper-V) のサポートは計画中です。詳細はissue #380を参照してください。Windows Pro/Enterpriseが必要です。

前提条件とセットアップ

Linux

# Install prerequisites automatically
rdc ops setup

# Or manually:
sudo apt install libvirt-daemon-system virtinst qemu-utils cloud-image-utils docker.io
sudo systemctl enable --now libvirtd

macOS

# Install prerequisites automatically
rdc ops setup

# Or manually:
brew install qemu cdrtools

セットアップの確認

rdc ops check

プラットフォーム固有のチェックを実行し、各前提条件の合否を報告します。

クイックスタート

# 1. Check prerequisites
rdc ops check

# 2. Provision a minimal cluster (bridge + 1 worker)
rdc ops up --basic

# 3. Check VM status
rdc ops status

# 4. SSH into the bridge VM
rdc ops ssh 1

# 5. Tear down
rdc ops down

クラスター構成

デフォルトでは、rdc ops upは以下をプロビジョニングします:

VMID役割
ブリッジ1プライマリノード — Rediaccブリッジサービスを実行
ワーカー111リポジトリデプロイメント用のワーカーノード
ワーカー212リポジトリデプロイメント用のワーカーノード

--basicフラグを使用すると、ブリッジと最初のワーカーのみをプロビジョニングします(ID 1と11)。

--skip-orchestrationを使用すると、Rediaccサービスを起動せずにVMのみをプロビジョニングします。VM層を分離してテストする場合に便利です。

設定

環境変数でVMリソースを制御します:

変数デフォルト説明
VM_CPU2VM あたりのCPUコア数
VM_RAM4096VMあたりのRAM(MB)
VM_DSK16ディスクサイズ(GB)
VM_NET_BASE192.168.111ネットワークベース(KVMのみ)
RENET_DATA_DIR~/.renetVMディスクと設定のデータディレクトリ

コマンドリファレンス

コマンド説明
rdc ops setupプラットフォームの前提条件をインストール(KVMまたはQEMU)
rdc ops check前提条件がインストールされ動作していることを確認
rdc ops up [options]VMクラスターをプロビジョニング
rdc ops downすべてのVMを破棄しクリーンアップ
rdc ops statusすべてのVMのステータスを表示
rdc ops ssh <vm-id>特定のVMにSSH接続

rdc ops up オプション

オプション説明
--basic最小構成のクラスター(ブリッジ + ワーカー1台)
--lite軽量リソース
--force既存のVMを強制的に再作成
--parallelVMを並列でプロビジョニング
--skip-orchestrationVMのみ、Rediaccサービスなし
--backend <kvm|qemu>自動検出されたバックエンドを上書き
--os <name>OSイメージ(デフォルト:ubuntu-24.04)
--debug詳細な出力

プラットフォームの違い

Linux (KVM)

  • libvirtを使用してVMのライフサイクルを管理
  • ブリッジネットワーキング — VMは仮想ネットワーク上のIPを取得(192.168.111.x)
  • VM IPへの直接SSH接続
  • /dev/kvmとlibvirtdサービスが必要

macOS (QEMU + HVF)

  • PIDファイルで管理されるQEMUプロセスを使用
  • SSHポートフォワーディングによるユーザーモードネットワーキング(localhost:222XX)
  • 直接IPではなくフォワードされたポート経由でSSH接続
  • mkisofsでCloud-init ISOを作成

トラブルシューティング

デバッグモード

任意のコマンドに--debugを追加すると詳細な出力が得られます:

rdc ops up --basic --debug

よくある問題

KVMが利用できない(Linux)

  • /dev/kvmが存在するか確認:ls -la /dev/kvm
  • BIOS/UEFIで仮想化を有効にする
  • カーネルモジュールをロード:sudo modprobe kvm_intelまたはsudo modprobe kvm_amd

libvirtdが動作していない(Linux)

sudo systemctl enable --now libvirtd

QEMUが見つからない(macOS)

brew install qemu cdrtools

VMが起動しない

  • ~/.renet/disks/のディスク容量を確認
  • rdc ops checkを実行してすべての前提条件を確認
  • rdc ops downを実行してからrdc ops up --forceを試す