$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

vagrantで使ったコマンド

最近vagrantを使ってみてるのだけど、いくつか使ったコマンドがあったので、メモがてらブログに書いてみる。

vagrant init

vagrant initでそのディレクトリにおけるvagrantを設定できる。具体的に言うとそのディレクトリ以下にVagrantfileというものが出来る。例えば以下のように使う。

$ vagrant init

vagrant box

vagrant boxはどこかのURLにあるboxファイルを名前付きで手元に持ってくるもの。vagrant box addつかえば持ってこれるし、vagrant box listを使えば手元に何があるか分かる。あとはremoveとかrepackageとかある。

boxをlocalに持ってきておけばいろいろなprojectで毎回boxファイルをdownloadせずに同じ物を使うことが出来るので便利。

$ vagrant box add precise32 http://files.vagrantup.com/precise32.box
$ vagrant box list
precise32

またvagrant initでもboxをlocalに作ってVagrantfileを作ることが出来るように見える(試してない)。

$ vagrant init precise32 http://files.vagrantup.com/precise32.box

vagrant up

Vagrantfileが作られたディレクトリではvagrant upを実行することでVMを立ち上げることが出来る。

$ vagrant up
[default] VM already created. Booting if it's not already running...
[default] Clearing any previously set forwarded ports...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders...
[default] -- v-root: /vagrant

vagrant upの実行が終わらない場合はvagrant upの実行が終わらない話 - $shibayu36->blog;を参考にどうぞ。

vagrant suspend, halt, destroy

VMを止めるにはsuspend, halt, destroyが使える。

suspendはいわゆるsleepっぽい感じがする。shutdownはhaltでよさそう。完全にVMを無くしてデータを消したい場合はdestroyを使えば良い。

$ vagrant suspend
$ vagrant halt
$ vagrant destroy

ちなみにchefとかで最初からセットアップできるか試したいとか言う時は

$ vagrant up
$ knife solo cook local.prepan.org -c config/knife.rb # 後述のvagrant ssh-configで.ssh/configに設定をしておかないといけない
$ vagrant destroy

のようにvagrant upしてchef soloで実行して、失敗したらvagrant destroyで全て破棄するみたいなの繰り返すといい感じにセットアップのテストが出来る。

vagrant ssh

vagrant upしたやつにsshしたければvagrant sshが使える。upしたディレクトリでvagrant sshするとsshできる。

$ vagrant ssh

vagrant ssh-config

vagrant sshではそのディレクトリに入らないとsshできないし、chefとかで試したいときにはvagrant sshを使えないので、普通にsshで入りたいみたいなときにはvagrant ssh-configを使って.ssh/configを設定すると良い。

$ vagrant ssh-config --host local.prepan.org
Host local.prepan.org
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile "/Users/shibayu36/.vagrant.d/insecure_private_key"
  IdentitiesOnly yes

これを.ssh/configに設定しておけば先述した、knife solo cook local.prepan.org -c config/knife.rb とかも出来るようになる。便利。

まとめ

chefの勉強してたらvagrant使えないといろいろ試す環境が作れなかったので適当に勉強してみて自分用にメモしました。vagrantは他にもprovisioningとかでvagrant up時にいろいろ設定してくれたり、最近はAWSのインスタンス立てたりいろいろできるので便利ですね。