Vagrant | Global Control と percol( peco ) を組み合わせて、どこからでも簡単に VM を操作する #vagrant #percol #peco
概要
Vagrant の version 1.6 で新規追加された Global Control と
percol( peco ) を組み合わせて、どこからでも簡単に VM を操作できるようにします。
global status から id を抽出する基本コード
$ vagrant global-status | ruby -n -e 'print $_ if $_.split(" ").first =~ /[a-z0-9]{7}/' | sed -e '$d' | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" | percol | cut -d' ' -f1
上記のコマンドが行っていることは
- global status で Vagrant の VM のステータス一覧を取得
- 各行をスペース区切りでカラム配列化し、最初のカラムが英数字7文字の場合のみを出力対象にする
- これによってヘッダーや後続の説明文を除外する
- 最後の行を除外
- これによって
"vagrant destroy 1a2b3c4d"
という1文を除外する
- これによって
- ANSI Color シーケンスを削除
- percol に渡してレコードを選択
- 1カラム目のみ( id )を出力
補足
- ruby に依存したくない方は、 ruby 部を awk や sed に置き換えてください。
- UNIX のシェルは得意ではないので、シェル芸人の方はもっと素晴らしいワンライナーを書けるでしょう。
- percol の部分は peco なり、他の percol 代替で自分が利用しているものに置き換えてください。
global status から id 抽出デモ
alias を作成
alias vgs="vagrant global-status | ruby -n -e 'print \$_ if \$_.split(\" \").first =~ /[a-z0-9]{7}/' | sed -e '\$d' | sed \"s,\x1B\[[0-9;]*[a-zA-Z],,g\" | percol | cut -d' ' -f1"
alias vgs
を利用するコマンド例
$ vagrant global-status
$ vagrant halt `vgs`
$ vagrant global-status
$ vagrant up `vgs`
$ vagrant global-status
alias vgs
を利用するデモ
補足
ターミナル操作の記録には ttyrec
アニメーションGIFの作成には seq2gif
を利用しています。
- ttyrec | 端末操作を保存、再生するツール ttyrec を Cygwin 環境にインストール
- seq2gif | seq2gif をインストールして ttyrec で保存した操作記録からアニメーションGIFを生成する