Linux Mint 15 で vagrant を入れて、作成したVMにログインできるところまで確認した。ちなみに、vagrant は「放浪者」とかそんな意味だった(
alc)。
vagrant の公式サイトを参考にした。
- sudo apt-get install vagrant
ログ見てたら一緒にvirtualboxも入ってた。vagrantは、virtualboxでVM作成するところを自動でやってくれる。
- vagrant init precise32 http://files.vagrantup.com/precise32.box
vagrant の初期化。カレントディレクトリにVagrantfileを作成する。このファイルはrubyで書かれていて、第一引数は、生成するVMのインスタンス名を指定し、第二引数は、ユーザのシステムに.boxなファイルが無いときに取得しに行くURLを指している。ちなみに、このURLをブラウザに突っ込んだら、website-unavailable.com に飛ばされた。vagrant init 自体は、設定ファイルを生成するだけなので、すぐに終わる。
VMを起動する。最初は、VMイメージが手元にないので、vagrant init の第二引数で指定したURLに取りにいってるみたい。二つ目のインスタンスを作ろうとしたら、ダウンロードは起こらなかったけど、Thinkpad X220i (Core i3-2310M@2.10 GHz, 4GB RAM, SSD) な環境で34秒かかった。結構遅い。この処理の内訳も気になる。VMの起動とゲストOSの起動処理の比率で、この34秒が遅いのか否か分かれる。vagrant up したら、/usr/lib/virtualbox/VBoxHeadless とかいうプロセスが起動してた。
起動したVMにsshでログインできる。パスワードとかはかかってない。あと、コマンドのヒストリを見ると、update-locale とか locale-gen とかしてた。ちなみに、uname -aしたら、Ubuntu 32-bit で Linux 3.2.0-23-generic-pae だった。
vagrant suspend でVMを停止できる。4.557 秒かかった。
vagrant suspend したVMを再開できる。19秒かかった。ちなみに、vagrant up でも再開できる。
vagrant で作成したVMの状態を確認できる。また、VM名を指定することで、各VMごとの状態を確認できるらしい。今回は、一つしかインスタンスを起動していなかったためか、「A multi-vm environment is required for name specification to this command.」と怒られた。
vagrant suspend はサスペンドなので、状態を保持して停止させるけど、vagrant halt は、シャットダウンするみたい。
とりあえず、ps -ef してみたら、以下のプロセスが起動してた。
- /usr/lib/virtualbox/VBoxXPCOMIPCD
- /usr/lib/virtualbox/VBoxSVC
- /usr/lib/virtualbox/VBoxHeadless
最初のはIPCだから、vagrantコマンドでvirtualboxを制御するためにコマンドを送るインタフェースかな?VBoxSVCは、
ここを見ると、SMF Service Wrapperとのこと。書いてあることを素直に解釈すると、「非特権ユーザの所有するvirtualboxインスタンスをSolarisのSMFサービスとして制御する。」とか、「VBoxHeadless VMを起動した後にSMFサービスとしてresumeして、VMへのシリアルコンソールヘ接続する。」とのこと。色々書いてあるけど、要は、virtualboxのインスタンスの管理を便利にするためのものらしい。引数には、「--auto-shutdown」が指定されている。VBoxHeadlessは、man vboxheadlessを読むと、virtualboxのVMを起動したり、起動したVMの画面をキャプチャできるらしい。とにかく、vagrantでは、VMの起動にvboxheadlessを利用している。引数は色々指定されている。--comment でVMのインタンス名を指定しているようだ。--startvmも渡されているようなので、やはり、vboxheadlessでVMを起動している。また、--vrde config も渡されている。これは、よくわからない。
ホスト側から見た環境は、大体、これくらい。次にゲストから見てみる。topを実行すると、「Mem: 378000k total」と表示されるので、378 MBメモリが割り当てられているようだ。cat /proc/cpuinfo すると、processor: 0 の状態しか表示されないので、1コアしか割り当てられていない。gccやmakeは最初から入っているみたい。このあたりのスペックに関しては、vagrant init したときに指定したURLで配布されているイメージの仕様だろうから、どこかに書いてあるだろう。
ざっと見るとこんな感じだった。vagrant -h すると、以下のようなコマンドが利用できるらしい。
- box
- destroy
- gem
- halt
- init
- package
- provision
- reload
- resume
- ssh
- ssh-config
- status
- suspend
- up
今回書いていない、package, provision, reload あたりがとても気になる。vagrant gem は、vagrantのプラグインをgemを使ってインストールするコマンドらしい。どのコマンドも、vagrant [command name] -h で使い方が表示される。ただし、-h オプションで参照できる情報が異様に少ないので、あまり参考にはならない。
今後は、今回書かなかった(試していないので書けなかった)コマンドや設定ファイルの中身を見ていきたい。
追記(2013/12/29 00:57):SMFはService Management Facility の略らしい。
ここに書いてあった。