--- categories: "vagrant" comments: true date: "2014-01-19T00:00:00+09:00" title: "Rails環境構築(1) Vagrantで仮想マシン構築" --- Vagrantで仮想サーバー構築してみたのでメモ。構築するだけなら、楽。大してコマンドも要らない。 ## インストール まずはGemでインストールしてみたけど、バージョン古いっぽくてダメだった。なので、ふつうにウェブからダウンロードしてインストールします。URLは以下。ついでに「GET STARTED」からいろいろ読んどくといいと思う。公式のRead meに勝るものはないです。 [http://www.vagrantup.com/](http://www.vagrantup.com/) インストールしたらバージョン確認。 ``` $ vagrant -v ``` ## boxの追加 まずはboxと呼ばれる仮想マシンイメージをvagrantに追加する。 ``` $ vagrant box add hoge url ``` hogeは適当なイメージ名、urlはウェブで公開されているboxのurl。イメージは[ココ](http://www.vagrantbox.es/)に大量にあるので、任意のサーバーのURLをコピってくればOK。ほとんどがLinux、ちょこっとだけBSD。 ## vagrantの初期化 ``` $ mkdir vagrant $ cd vagrant $ vagrant init hoge ``` vagrant initでカレントディレクトリをvagrant用に初期化する。なのでmkdirは好きなとこに好きなフォルダ作ればよい。そこに仮想マシンの設定ファイルが作られるので。vagrant initの引数にはさっきvagrant box addで追加した仮想マシンイメージの名前を渡してやる。渡さないとデフォルト値で設定ファイルが作られてしまう。これで最初ハマった。ちなみにどうハマるかというと、vagrant upしたときにこんなエラーが出る。 ``` There are errors in the configuration of this machine. Please fix the following errors and try again: vm: * The box 'base' could not be found. ``` 「base」という名前のboxがないというエラー。どうもデフォルトでbaseという名前が使われるらしいのだが、さっきbox addした名前と異なるので、そんなboxはないから立ち上げられませんよということ。もしこの状態になってしまった場合の対処としては、vagrantfileのconfig.vm.boxの値を該当の仮想マシンイメージ名に替えてやれば上がるようになる。 話が飛んでしまったが、Vagrantfileはvagrant initしたディレクトリの中に出力されている。で、仮想マシンを上げる前にちょっとコイツの編集が必要。 ``` # Create a private network, which allows host-only access to the machine # using a specific IP. config.vm.network :private_network, ip: "192.168.xx.xx" ``` 上のconfig〜行のコメントアウトを外してやって、IPを適当に設定する。が、自分の環境だとこれだけでは仮想マシンを起動した時にエラーが出てしまって、さらにprivate_networkをpublic_networkに替えてやらなくてはならなかった。ググってるとこの手順やってる人ほとんどいないんだけど、何が原因だろう。 ## 仮想マシンの起動 で、ここまでやっていよいよVM起動。 ``` $ vagrant up ``` てっきりVirtual boxがGUIでも上がってくるのかと思ったが、仮想マシン上がりましたよ―というメッセージが表示されるだけでGUI上は何の変化もない。なのでOSが上がってるのかわかりにくいんだけど、SSHで入ると実際入れるのでどうも上がっているらしい(ちなみにGUIでVirtual box上げてももちろん起動状態はわかる。あとvagrant statusコマンドでもわかる)。 ``` $ vagrant ssh ``` bashのsshコマンド発行しなくても、vagrantの独自コマンドで入れる。楽。ちなみに入るときのユーザーは勝手にvagrantというユーザーが作られているんだとか。あとはもう好きにやっちゃってーというところ。他に使いそうなコマンドは以下の表あたりか。
| コマンド | 意味 |
|---|---|
| vagrant halt | 仮想マシンの停止 |
| vagrant destroy | 仮想マシンの削除 |
| vagrant box list | 仮想マシンイメージリストの表示 |
| vagrant status | 仮想マシンの状態確認 |