もじれつとがめん

プログラムの忘備録とゲームとかその他色々。

vagrantの使い方とか色々

vagrantって?

仮想環境を構築したり実行したりと仮想環境を扱うためのツール。
VirtualBox仮想マシンを起動するのでvagrant以外にVirtualBoxのインストールが必要だけど、コマンドで簡単に仮想環境を作れたりその環境をコピーして配布したりできるので開発環境の用意とかに使える。
また、仮想マシンの状態を保存できるのである地点の状態をバックアップして置くとかも出来るし、設定ファイルをgitとかで管理するとチーム全員で同じ開発環境をすぐに用意できるのが強み。

インストール

私は環境がmacなのでbrewで入れちゃう。
windowsとか他の環境は各自のインストール方法で。
[code] brew cask install virtualbox brew cask install vagrant [/code]

vagrantの流れ

大体の流れとして、まず仮想環境の元になるboxをダウンロードして、次にダウンロードしてきたboxを元に環境を展開し、最後に起動...
という流れで非常に短く分かりやすい。
この最初に出てきたboxだが、簡単にイメージするなら各種osのデーター的なものである。
が、boxは自分の環境を保存するときにも生成されるので、その生成されたboxを他の端末にコピーして環境を展開すると簡単に環境の構築が出来る。
ここで注意したいのが環境を展開する際には、展開したディレクトリに各種設定ファイルとかが生成されるので、キチンと環境毎にディレクトリを作って分けた方が良い。
プロジェクト毎みたいな感じで。

[code] //Vagrantにboxを追加する vagrant box add box名(好きな名前でok) http://boxファイルの置き場所

//boxの一覧を表示してみる vagrant box list

//boxの展開 mkdir test //任意のディレクトリを作成する cd test vagrant init box名(またはboxを直接指定する)

//仮想マシンの起動 vagrant up

//仮想マシン内にアクセス vagrant ssh * * * 仮想マシンからログアウトしたら * * *

//仮想マシンの完全終了 vagrant destroy [/code]

こんな流れになる。
ようはboxファイルを展開してそれを元に構築、アクセスするの別にweb上からダウンロードしなくても、普通にコピーとかでboxをローカルに持ってきて、そのパスをaddの時に指定しても同じ事が出来る。

コマンドの使い方

各種コマンドの使い方について説明。
ちょこっとややこしいと個人的には感じた。

仮想マシンのダウンロード

vagrant box add
これはvagrant仮想マシンをダウンロードして登録するコマンド。
webからダウンロードしてくる場合、パスはwebのパスをつかう。
普通にローカルにあるboxファイルを指定する事もできるし、開発とかで環境をそろえるならこっちの方が多い。 [code] vagrant box add box名 url(それかboxファイルまでのパス) [/code] box名は好きな名前を,urlにはboxファイルがおいてある場所を指定する。
ココで設定したboxの名前は至る所でつかうので、分かりやすいものを推奨。

仮想マシンの展開(初期設定・セットアップ)

boxを元に展開する。
コマンドを実行したディレクトリで展開するので、あらかじめ展開したいディレクトリをつくって移動しておく事。
[code] mkdir hoge//ディレクトリ作成 cd hoge

//展開 vagrant init box名 [/code]

展開が完了するとVagrantfileというファイルが生成されるはず。
これがこの仮想環境の設定がしるしてあるファイルでこいつをgitとかで管理すると、チームで同じ開発環境を共有できたりするので便利(まだチームで使った事無いし私自身もまだvagrantを使いこなしてない。。)
この"Vagrantfile"凄く重要で、このファイルがある所でしか仮想マシンを起動できない。

仮想マシンの起動

仮想マシンを展開した時にディレクトリに生成される"Vagrantfile"と同じディレクトリに居る時に実行すると起動する。
それ以外の場所だと何も起こらずに怒られる。

[code] vagrant up [/code] 拍子抜けするけどこれだけ。
ただし起動が完了しただけなので注意。

仮想マシンの状態確認

現在、起動している仮想マシンの状態を確認する。
[code] vagrant status [/code]

仮想マシンのシャットダウン

現在起動している仮想マシンをシャットダウンする。
仮想マシン自体を終了させるので注意。普通のpcのシャットダウンと同じで、仮想マシンをシャットダウンして使っている本体のリソースを解放する。
でも別に仮想マシン自体が消える訳ではない。

[code] vagrant halt [/code]

仮想マシンの一時停止

現在起動している仮想マシンを一時停止して本体のリソースを解放する。
普通のpcでいうスリープ状態で、再び起動すると一時停止した時点からいじれる。

[code] vagrant suspend [/code]

vagrant up で再び起動させる事が出来る。

仮想マシンの削除

現在構築されている仮想マシンを削除する。
だけど、Vargrantfileとかも削除されるのではなく現時点の仮想マシンを削除するだけなので再びvargrant upsするとVargrantfileを生成した時点まで構築出来る。
これが使われるような状況は、仮想環境でプラグインやパッケージの実験をしていて環境ぶっ壊した時にもっかい綺麗な状態に戻すとかだと思う。

[code] vagrant destroy [/code]

仮想マシンの再起動

現在起動している仮想マシンの再起動をおこなう。
普通のpcの再起動と同じ。
[code] vagrant reload [/code]

仮想マシンsshで接続

ssh仮想マシンにアクセスする。
このコマンドで仮想環境の中にはいってコマンドラインをいじれる。

[code] vagrant ssh [/code]

仮想マシンの保存

起動している仮想マシンの状態を保存してbox化する。
このコマンドによって配布用やバックアップ用のboxファイルが作れるので、あとは生成されたboxファイルをaddするなりコピーするなりで使用する。

[code] vagrant package //package.boxが生成される [/code] 生成されたpackage.boxはリネームして分かりやすいように名前を付けるのを推奨する。

参考にしたサイト

http://promamo.com/?p=3696 http://qiita.com/t_cyrill/items/ef9cb2b615bfb326f79c http://blog.mizoshiri.com/archives/1387 http://qiita.com/htk_jp/items/929875eaa5afc71c25ed

終わり

とりあえずはこんなもん。
ぶっちゃけこの手の記事は腐るほど書いてあるからググればあっという間だった。
私も使い始めたので備忘録にする。