記事執筆時点で、プログラマ歴3週間の雑魚プログラマが記事を書いています。
間違っている可能性がございますので、参考までに御覧ください。
OS X El CapitanとWindows7の実行環境にて動作確認済み。
Vagrantとは
Vagrantは、開発環境の構築と共有を簡単に行うためのツール。
実際にサービスを作る時、チームで開発する時など皆が同じ開発環境を構築できるように、仮想環境を立てるときに役立ちます。
Vagrantは同じ環境を再現できるように仮想マシン環境の管理する機能+共有する仕組みを提供してくれます。
[参照したサイト:開発環境の構築・共有を簡単にするVagrant入門]
全くvagrantについて知らない人は、ドットインストールでも見てね。
新人の場合、プロジェクトに加入した時(またはPCをもらった時)に最初に行う環境構築作業になるかと思います。この記事で、新人の仲間の役に少しでも立てればと思います。
準備(Vagrant&VirtualBox)
- こちらからVagrantをダウンロード:Vagrantサイト
- 上記サイトからダウンロードできたら、dmgファイルを開いて手順通りにインストール
- こちらからVirtualBoxをダウンロード:Oracle VM VirtualBox
- 上記サイトからダウンロードできたら、dmgファイルを開いて手順通りにインストール
導入
- Vagrantに複数のVMを立てることを想定し、適当に作業ディレクトリを作りましょう。
作業ディレクトリ名はボックス名に合わせると良いかと思います。
(今回はubuntu14.04を使用するので'ubuntu_1404'と命名します)
mkdir ubuntu_1404
cd ubuntu_1404
- boxのダウンロードはこちら
boxの追加方法は、コマンドを叩くか直接ダウンロードするか2通りある。
- コマンドを叩いてダウンロードする場合。
- 上記のサイトから入れたいboxを探し、URLをCOPYする
-
vagrant box add {title} {url}
上記コマンドを打つ。{title}は何でも良いが、入れるbox&バージョン名にしておくと管理しやすい。(例:ubuntu1404など)
- ソースを直接ダウンロードする場合。
- 上記のサイトから入れたいboxを探し、Nameの欄にリンクの貼ってあるboxを選び直接ダウンロードしてくる。
- 先ほど作成した作業ディレクトリ配下に、ダウンロードしてきたboxを移動する
-
vagrant box add {title} {path}
上記コマンドを打つ。{title}は何でも良いが、入れるbox&バージョン名にしておくと管理しやすい。(例:ubuntu1404など)
- boxを追加できているか確認する
vagrant box list
- 確認が取れたら、Vagrantfileを生成する。
vagrant init {title}
{title}はboxを追加した時に命名した{title}です(上記例だと'ubuntu1404')
Vagrantfileの設定
####box周りの設定
config.vm.box = "ubuntu1404" # boxをaddした時の'title'で使用するboxを指定
config.vm.box_url ="boxを参照するurl" # urlからboxを取得(localに無ければ)
config.vm.box_check_update = false # boxのアップデート
####ネットワーク周りの設定
「ポートフォワーディングとは、ローカルコンピュータの特定のポートに送られてきたデータを、別に用意した通信経路を用いてリモートコンピュータの特定ポートに送信すること」らしいです。(参照)
ホスト・ゲスト間でのファイル共有/同期するディレクトリの指定に関しては、
詳細に書かれた記事がございますので、以下を参照して下さい。
[Vagrant]ホスト/ゲスト間のファイルの共有/同期機能(SYNCED FOLDERS)について
# ポートフォワーディングの設定
config.vm.network "forwarded_port", guest: 80, host: 8080
# プライベートネットワークでのIPアドレス指定
config.vm.network "private_network", ip: "127.0.0.1"
# ホスト・ゲスト間でのファイル共有/同期するディレクトリを指定
config.vm.synced_folder "../data", "/vagrant_data"
####VMの設定
vb.gui = true # 仮想ウインドウをGUIモードで起動
vb.memory = "1024" # 起動するVBに割くメモリの大きさ
####複数vm起動
config.vm.define :node01 do |cfg|
cfg.vm.box = "このvm起動用box(重複可)"
cfg.vm.network :hostonly, "このvm起動用IP(重複不可)"
cfg.vm.host_name = "node01"
end
config.vm.define :node02 do |cfg|
cfg.vm.box = "このvm起動用box(重複可)"
cfg.vm.network :hostonly, "このvm起動用IP(重複不可)"
cfg.vm.host_name = "node02"
end
config.vm.define :node03 do |cfg|
cfg.vm.box = "このvm起動用box(重複可)"
cfg.vm.network :hostonly, "このvm起動用IP(重複不可)"
cfg.vm.host_name = "node03"
end
基本的なところはこんなところでしょうか。
その他にVagrant起動時にDockerコンテナ起動するように構成したりなどもできます。
興味があれば、色々あるんで調べて下さい。
補足
windowsユーザーは、Linux環境構築にあたりTeraTermをインストールすることをオススメします。
macユーザーはiterm2を入れているかと思いますので、iterm2を使っていればOKです。
TeraTermのインストールはこちらから
VagrantとTeraTermの連携は以下を参照。
- vagrant ssh で TeraTerm を起動する - Qiita
- VagrantにTeratermマクロで接続する - Qiita
- vagrant teraterm が便利すぎてしょうがない件
Vagrantコマンド(よく使うやつ)
操作 | コマンド |
---|---|
仮想マシン起動 | vagrant up |
仮想マシン停止 | vagrant halt |
仮想マシン再起動 | vagrant reload |
仮想マシン削除(boxをaddして、initする前の状態に戻す。) | vagrant destroy |
仮想マシン接続 | vagrant ssh |
仮想マシン接続状況表示 | vagrant ssh-config |
上記のコマンド以外は、バージョン確認(vagrant -v
)とインストール時に利用したboxコマンドぐらい。
boxコマンドは普段あまり使わないので、都度ググれば良いかな?
追記:VagrantのゲストOSへの簡単proxy設定
会社とか研究室だとproxy周りの設定もしなければ、いけないことがあるかと思います。
そんな時に役立つ設定方法を紹介してくれている記事があります。
新人だとproxy周りでハマることが多いと思うので、参考までにどうぞ。
vagrant-proxyconf で行う ゲストOSへのかんたんProxy設定
ちなみにproxyに関しては、「環境変数の設定」「各ブラウザでのプロキシ設定」は忘れないようにしましょう。