Vagrantをリモートで使いたい (けど妥協した)

VM で開発用のサーバを構築するにあたって、開発用PCではなく他の高スペックPCを母艦にしたいよねーという話。*1


で、とりあえず「vagrant リモート」でググってみれば、やはり同じことを考える人がいたようだ。

VagrantでリモートのVirtualboxを実行するvagrant-remoteを作ってみました - @masuidrive blog
vagrant-remote


公開されているスクリプトを拝見すると、アイディアとしては ssh でつないで vagrant コマンドを叩いているようだ。
なるほどと思いつつも、母艦にしたい PC に vagrant をインストールしたくない、コマンド実行のたびに ssh 接続しているので時間かかりそう、ということで残念ながらこのスクリプトは見送ることにした。


さてどうしたものかと考えてみたところ、自分の要件としては

  • 母艦に ssh 接続は可能
  • VM の設定、OS のインストール、プロビジニングは手動で行う
  • 基本的にひとつの VM を使い続ける(破棄して作り直したりはしない)
  • VM の起動・終了・スナップショットが取れれば充分
  • 対象の VM ソフトは VirtualBox のみ

くらいだったので、「あれ? これって母艦に ssh でつないで直接 VirtualBox のコマンド叩けば良くね?」ということに気が付いてしまった。


ただ、VirtualBox のコマンドを覚えるのはちょっとしんどいので、さくっと vagrant 風の簡単なラッパースクリプトを作ってみた。


murank/vbox.sh


使い方としては、母艦の適当なフォルダにダウンロード*2して (ssh 経由で) 実行するだけ。

Usage: ./vbox list
              up [--gui] <vm>
              down <vm>
              suspend <vm>
              sandbox [list|begin|rollback|commit] <vm>


これで簡単に Infrastructure as Code を試せるようになったので、次はセットアップ用の playbook を書かねば…。

*1:開発用PCでも VM 動かせるけど、それでPCの動作がモッサリするのが嫌だったので

*2:シンタックスハイライト用に拡張子付けてるけど、ファイル名はお好きに