鼻水出るほどびっくりな環境構築ツール Vagrant
仕事で仮想マシンを使うことにして(今まではXAMPPやAWSで事足りてた)、ついでに面倒だから自動構築できる手段を獲得しよう、ということで初めて Vagrant と Chef-solo をいじりました。
今更感はすごいものの、実際に触ってみてその便利さに思わず鼻水を吹き出しそうになったので、今回はそのうちの Vagrant に関して記録を。Chef-soloに関してはまた今度(たぶん)。
Vagrant と Chef-solo は合わせて使えば仮想環境の作成や破棄、自動構築や複製が簡単にできるようになる、という代物(少なくとも今はそう認識しています)。
★今回したいこと★
Vagrant で仮想マシンを立て、ホストのブラウザからゲストにアクセスするまで。更に外部PCからもアクセス。
※基本的にMacで動かしています。
1. VirtualBox と Vagrant のインストール
Vagrant は仮想マシンのためのツールなので、仮想化ソフトがまず必要。
ということで今回は VirtualBox を使います。
以下のサイトからダウンロードしてインストール。
https://www.virtualbox.org/wiki/Downloads
Vagrant は以下のサイトからダウンロードしてインストール。
http://www.vagrantup.com/downloads.html
2. 仮想マシンを Vagrant で起動
まず、インストールした Vagrant の動作確認。
1 |
$vagrant -v |
Vagrant はBOXファイルというテンプレートを使って仮想環境を作成します。
以下のサイトに有志の方々が様々なBOXファイルを置いてくれていますので、今回はそこから使います。
http://www.vagrantbox.es
(veeweeというツールでBOXファイルは自作も可能)
上記サイトからBOXファイルをインストール。
インストールするファイルに名前を付けますが、仮に名前をcentos6.5とします。
1 |
$vagrant box add centos6.5 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box |
BOXファイルが追加されているかどうかを確認。
1 |
$vagrant box list |
centos6.5が表示されれば成功。
仮想マシンの起動に必要な設定ファイル、Vagrantfile を作成します。
1 |
$vagrant init centos6.5 |
作成された Vagrantfile を編集します。
今回はわかりやすくするため、 VirtualBox の画面が出てくるように以下の箇所のコメントを削除。その他の仮想マシンの設定もこのファイルで調整できます。
1 2 3 4 5 6 7 |
config.vm.provider "virtualbox" do |vb| # # Don't boot with headless mode vb.gui = true # # # Use VBoxManage to customize the VM. For example to change memory: # vb.customize ["modifyvm", :id, "--memory", "1024"] end |
そして仮想マシンを起動。
1 |
$vagrant up |
すると以下のように VirtualBox が起動して CentOS が立ち上がります。
停止させたい時。
1 |
$vagrant halt |
VirtualBox のCentOSにログイン
login : vagrant
password : vagrant
ターミナルから ssh でのログインもできます。
1 |
$vagrant ssh |
Windows はそのままでは vagrant ssh はできませんが、Tera Term や PuTTY で sshログインできます。(確かデフォルトだと Host:127.0.0.1 / Port:2222)
仮想マシンを破棄したい場合は以下。
1 |
$vagrant destroy |
使いたい時に vagrant up して ssh するだけ。
3. 仮想マシンにホストブラウザからアクセス
Vagrantfile の以下の箇所のコメントを外します。
1 2 3 |
# Create a private network, which allows host-only access to the machine # using a specific IP. config.vm.network "private_network", ip: "192.168.33.10" |
これでホスト内で有効なIPが割り当てられます。
そして vagrant up します(既に起動中の場合は vagrant reload)。
後は試しに Apache をインストールしてサービス起動するだけ。
ホストのブラウザに 192.168.33.10 を入力すれば以下のようにアクセスできると思います(index.htmlを置いています)。
4. 外部から仮想マシンにアクセス
更に、Vagrant Cloud というサービスを使用すると簡単に他のPCやスマホからも仮想マシンにアクセスできます。
https://vagrantcloud.com/
上記のサイトにアクセスして右上からユーザ登録。
登録完了後、ターミナルでログイン(登録時のユーザ名とパスワードを入力)。
1 2 3 4 5 6 7 8 9 |
$ vagrant login In a moment we'll ask for your username and password to Vagrant Cloud. After authenticating, we will store an access token locally. Your login details will be transmitted over a secure connection, and are never stored on disk locally. If you don't have a Vagrant Cloud account, sign up at vagrantcloud.com Username or Email: ***** Password (will be hidden): You're now logged in! |
そして vagrant share を実行。
すると、メッセージの下の方にURLが出力されます。
1 2 3 4 5 6 7 8 9 10 |
$ vagrant share ==> default: Detecting network information for machine... default: Local machine address: 192.168.33.10 default: Local HTTP port: 80 default: Local HTTPS port: disabled ==> default: Checking authentication and authorization... ==> default: Creating Vagrant Share session... default: Share will be at: ridiculous-rhinoceros-9412 ==> default: Your Vagrant Share is running! Name: ridiculous-rhinoceros-9412 ==> default: URL: http://ridiculous-rhinoceros-9412.vagrantshare.com |
このURLで他のPCやスマホからも仮想マシンにアクセスできます。
チーム内で開発中のものをちょっと確認してもらう、とかに使えそう。
5. その他(共有フォルダとSahara)
Vagrantfile を編集することでホストとゲスト間の共有フォルダを設定できます。
以下の箇所のコメントを外して共有したいパスを記述(手前がホスト側のパス)。
1 |
# config.vm.synced_folder "../data", "/vagrant_data" |
vagrant reload して設定を適用。
また、Saharaというプラグインで簡単に仮想マシンのロールバックができます。
Sharaプラグインをインストール。
1 |
$vagrant plugin install sahara |
仮想マシン起動中にホスト側で sandbox をオンにしておけば、
1 |
$vagrant sandbox on |
どんなに仮想マシンをぶっ壊しても以下のコマンドで on にした時点までマシン状態をロールバックできます。
1 |
$vagrant sandbox rollback |
他にも便利なプラグインが多数ありますが、Vagrant だけでも非常に便利。
びっくりするツールです。鼻水注意。
こちらのらくがきもどうぞ。
関連記事
-
Vagrantで複数サーバ立ち上げ
普段、ローカルPCでの開発の際、アプリケーションの動作環境をできるだけ本番環境と同じ状態にしたい時は
- PREV
- ブンタウ日帰り日記
- NEXT
- ベトナムの一大遊園地 スィティエンパークに行ってみた!