Posted filed under Mac, Programming.

 もうちょっとで新しいMacBook 12″が出ますよね。軽いのにRetinaですごく良さそうなのですが、CPUが非力なのが気になります。

 私はサーバサイドの開発がメインで開発環境の構築にはvagrantを使っています。vagrantはメモリもCPUも食うのでMacbookではちょっと厳しそう。特にテストの実行は数十分待たされそうな予感もあり、メインの開発には力不足です。

 別にvagrantの実行はローカルホストで行う必要はないので、aws providerを使ってEC2上で動かしてみたりしたのですが、ネットワークやインスタンスコストの問題で常用は躊躇していました。

 検索していくと、本家のIssuesでもvagrantをリモート実行する議論が行われていました。そこで紹介されているプラグインを試してましたが用途とは合いませんでしたし、バージョンアップの多いvagrantで使い続けられるか心配でした。

 でもよく考えれば用途さえ限定すれば、リモート実行は難しい事じゃなのではないかと思い自分でvagrant-remoteコマンドを実装してみました。

https://github.com/masuidrive/vagrant-remote

 まだ未完成のコマンドですが、とりあえず公開する事にしました。自分でもまだ使っていないので自己責任でお願いします。

 Vagrantfileと同じディレクトリに下記の様な.vagrant-nodeファイルを置き、リモート実行するホストを指定します。あと同時にテンポラリディレクトリを指定します。

# .vagrant-remote
export REMOTE_NODE="user1@10.0.1.9"  # ユーザ名は省略できます
export REMOTE_PATH="/Users/masuidrive/tmp" # 指定しなくてもOK

 リモート実行するノードはLinuxかOSXでvagrantをインストールしておいてください。OSXでのみテストしているので、Linuxで動かなかったらPull Requestをお待ちしてますw。

Vagrantfileも一カ所だけ変更の必要があります。homeディレクトリをマウントしている部分を下記の様に変更してください。

config.vm.synced_folder ".", "/vagrant"
↓
config.vm.synced_folder (ENV['MOUNT'] || "."), "/vagrant"

 これで、vagrant-remote upをすると、リモートノードにsshしてNFSでローカルフォルダをマウントしてvagrant upを実行します。

 vagrant-remote sshでsshはできますが、今のところポートフォワーディングは行いません。そのうちやるかも。

vagrant-remote-up