LoginSignup
4
4

More than 5 years have passed since last update.

Vagrant | Global Control と percol( peco ) を組み合わせて、どこからでも簡単に VM を操作する #vagrant #percol #peco

Posted at

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 抽出デモ

global-status-percol.gif

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 を利用するデモ

vgs_usage.gif

補足

ターミナル操作の記録には ttyrec
アニメーションGIFの作成には seq2gif
を利用しています。

参照

Vagrant blog | Grobal Control

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4