PecoとpecrantによるVagrant操作がものすごく便利

便利なVagrantですが、複数のVMを扱ってると面倒に感じる時があります。


Vagrantfileはホームディレクトリ以下にこのように設置しています。

vagrant/
├── centos6.5
│   └── Vagrantfile
├── centos7.0.1406
│   └── Vagrantfile
└── coreos-vagrant
    └── Vagrantfile


CentOS6.5を操作していてCentOS7.0.1406を操作したくなった場合、
これまではcentos7.0.1406ディレクトリに移動して
vagrant upvagrant sshを行っていました。


こんな感じです。

$ pwd
/Users/kenichi/vagrant/centos6.5
$ 
$ cd ../centos7.0.1406/
$
$ vagrant up
$ vagrant ssh

VMの数や種類が多くなったりすると何度も行ったり来たりするのは面倒です。
そこで使うと便利なのがpecrantです!


f:id:tsunokawa:20141021234627g:plain
このようにvagrantマシンが一覧表示され選択するだけでカレントディレクトリから一歩も動くことなく
VMの起動・停止・SSH接続が可能になります。

セットアップ

GOROOT, GOPATH

以下各ソフトウェアのインストール手順のGoのGOROOT,GOPATHは
以下のような設定を前提としています。

#!/bin/bash
 
mkdir -p ~/go/{bin,pkg,src}
 
cat <<'EOF' >> ~/.bash_profile
 
# go
export GOROOT=`go env GOROOT`
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$PATH
 
EOF


Pecoインストール
brew tap peco/peco
brew install peco


vagrant-global-statusインストール
go get github.com/monochromegane/vagrant-global-status/
cd go/src/github.com/monochromegane/vagrant-global-status/cmd/vagrant-global-status/
go install


vagrant-pecoインストール
cd /usr/local/bin/
curl -O https://raw.githubusercontent.com/monochromegane/vagrant-peco/master/vagrant-peco
chmod +x vagrant-peco


pecrantインストール
cd /usr/local/bin/
curl -O https://raw.githubusercontent.com/gongo/pecrant/master/pecrant
chmod +x pecrant


pecrant up
kenichi-mac:~ kenichi$ pecrant up

QUERY>                                                                                                  IgnoreCase [1/1]
7d31f19  default virtualbox poweroff /Users/kenichi/vagrant/centos7.0.1406                                              
1049e95  default virtualbox poweroff /Users/kenichi/vagrant/centos6.5
8b373a9  core-01 virtualbox poweroff /Users/kenichi/vagrant/coreos-vagrant


pecrantヘルプ
kenichi-mac:~ kenichi$ pecrant help
Usage: pecrant <command>

  up        Start the selected vagrant machine
  provision Provision the selected vagrant machine
  reload    Restart the selected vagrant machine
  suspend   Suspend the selected vagrant machine
  resume    Resume the selected vagrant machine
  halt      Stop the selected vagrant machine
  destroy   Stop and delete all traces of the vagrant machine
  ssh       Connect to machine via SSH
  dir       Show directory path for vagrant environments
  list      Show vagrant environments for this user
  box       Manage vagrant boxes: update, remove
  help      Show this message