Vagrant + VMware Workstation:DevOpsラボ環境における「最強」の組み合わせ

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

なぜ私はVirtualBoxからVMwareに乗り換えたのか?

DevOpsやバックエンドエンジニアの方なら、Vagrantはすでにお馴染みでしょう。仮想マシンの構築を「コード化」できる素晴らしいツールです。ネット上のチュートリアルの多くは無料のVirtualBoxを使用していますが、社内で8台のESXiホストを長年管理してきた経験から、VMware Workstationは別格だと感じています。特にI/O(読み書き)速度とリソース管理の安定性において、圧倒的に優れています。

VMwareを使うと、動作が非常に「スムーズ」になります。仮想マシンの起動は、VirtualBoxで1分ほどかかっていたのが、わずか15〜20秒程度で完了します。共有フォルダ(shared folder)のマウント時に発生しがちだった細かいエラーも、ほとんどなくなりました。以前はVagrant用のVMwareプラグインは79ドルでしたが、現在はHashiCorpが無料で提供しています。これは個人のラボ環境をアップグレードする絶好の機会です。

必要なコンポーネントのインストール

まず、マシンにVMware Workstation ProまたはPlayerがインストールされている必要があります。次に、VagrantからVMwareを操作できるように、2つのコンポーネントを追加でインストールします。

1. Vagrant VMware Utilityのインストール

これは、VagrantがVMwareのAPIと通信するためのバックグラウンドサービスです。HashiCorpの公式サイトから、使用しているOS(Windows/Linux)に合ったインストーラーをダウンロードし、通常通りインストールしてください。

2. Vagrant VMware Desktopプラグインのインストール

ターミナルを開き、以下のコマンドを入力してプラグインをインストールします。プロセスはすぐに完了します:

vagrant plugin install vagrant-vmware-desktop

インストールが完了したら、vagrant plugin listを実行して準備ができているか確認してください。

VMware向けの標準的なVagrantfileの設定

VMwareを使用する場合、Vagrantfileでのプロバイダーの宣言方法が少し異なります。boxについては、VMwareとVirtualBoxの両方に最適化されているBentoのものを使用することをお勧めします。

以下は、Ubuntu 22.04のラボ環境を構築する際によく使うVagrantfileのサンプルです:

Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-22.04"

  config.vm.provider "vmware_desktop" do |v|
    v.gui = false              # バックグラウンドで実行(VMwareウィンドウを表示しない)
    v.cpus = 2                 # 2 CPUコアを割り当て
    v.memory = 4096            # 4GB RAMを割り当て
    v.linked_clone = true      # 非常に重要な機能
  end

  config.vm.network "private_network", ip: "192.168.56.10"
  config.vm.synced_folder ".", "/var/www/html", type: "nfs"
end

ヒント: v.linked_clone = true オプションはストレージ容量の救世主です。10GB〜20GBのファイルを丸ごとコピーする代わりに、VMwareはリンク形式のクローンを作成します。これにより、仮想マシンを数秒で準備でき、作成直後の容量も数百MB程度に抑えられます。

起動と試用

起動するには、プロバイダー名を指定して以下のコマンドを実行します:

vagrant up --provider vmware_desktop

毎回 --provider を入力するのが面倒な場合は、環境変数 VAGRANT_DEFAULT_PROVIDER=vmware_desktop を設定しておきましょう。マシンが起動したら、通常通り vagrant ssh コマンドでSSH接続できます。

VMware Workstationを開くと、新しい仮想マシンフォルダが表示されているはずです。RAMの設定からスナップショットまで、すべてのパラメータがVagrantとVMwareのGUI間で完全に同期されています。

トラブルシューティングの経験則

運用の中で得られた、重要な技術的ポイントをいくつか紹介します:

  • IPの競合: 仮想マシンがIPを取得できない場合は、Virtual Network Editorを確認してください。VMnet1やVMnet8が社内VPNなどのIP帯域と重複していないかチェックします。
  • CPUの高速化: 仮想マシンの動作が少し重いと感じる場合は、VMwareのプロセッサ設定で「Side channel mitigations」を無効にしてみてください。これにより、パフォーマンスが約10〜15%向上することがあります。
  • ログの確認: vagrant up がエラーで止まる場合は、~/.vagrant.d/ ディレクトリにあるプラグイン의 ログを確認してください。多くのエラーは、VMware Utilityが正しく起動していないことが原因です。

実際に3ノードのKubernetesクラスターでテストした際、VMware上のVM間ネットワーク遅延はVirtualBoxよりも明らかに低かったです。これにより、マイクロサービスのテスト精度が大幅に向上しました。ぜひこのコンビを試してみてください。一度使えば、もうVirtualBoxには戻りたくなくなるはずです。

Share: