O'Reilly(オライリー)の「実践Vagrant」を読みました。
- 作者: Mitchell Hashimoto,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/02/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (10件) を見る
今まで何気なく Vagrant を使っていたのですが、詳しく理解していなかったのです。
今年は、インフラやサーバ周りの知識強化を目標にしているので、その一環でもあります。やっていきです。
オライリーの割にはページ数が少ないので、さくっと読めます。しかも開発者である「Mitchell Hashimoto」氏が自ら記した本なのです。
少し古い本ではあるのですが、おすすめです。
こんなに簡単に開発環境を構築することです
Vagrantを使ってみて驚く点は、そのお手軽さです。
VirtualBoxとVagrantのインストールが完了していれば、以下の3ファイルをプロジェクト直下に置くだけで、Web+Dbサーバを構築することができます。
Vagrantfile
Vagrant::Config.run do |config| # ベースとなるBoxイメージを指定 # 基本的には、最小限のOSがインストールされています config.vm.box = "precise64" # Webサーバの構築 config.vm.define "web" do |web| # ポートフォワーディング(localhost:8080をVMの80に転送する) web.vm.forward_port 80, 8080 # ホストからのみアクセスできるローカルIPを付与する web.vm.network :hostonly, "192.168.33.10" # 共有フォルダの設定 # ホストの特定のフォルダに対して、VMからアクセスできるようになります # WebプログラムのソースコードをVMから読めるようにしたい時などに使います! web.vm.share_folder "v-root", "/vagrant", "." # シェルによるプロビジョニング(コマンド実行、ChefやPuppetも可能) web.vm.provision :shell, path: "web_provision.sh" # Vagrantfile 内で、直接コマンドを実行したい場合 web.vm.provision :shell, inline: "apt-get install -y mysql-client" end # Db(Mysql)サーバの構築 config.vm.define "db" do |db| db.vm.network :hostonly, "192.168.33.11" db.vm.provision :shell, path: "db_provision.sh" end end
web_provision.sh
#!/usr/bin/env bash # Apache2をインストールして、セットアップします echo "Installing Apache and setting up..." apt-get update apt-get install -y apache2 rm -rf /var/www # 共有フォルダの/vagrantをDocumentRoot化する対応 ln -fs /vagrant /var/www
db_provision.sh
#!/usr/bin/env bash # Mysqlをインストールして、セットアップします export DEBIAN_FRONTEND=nonintaractive apt-get update apt-get install -y mysql-server sed -i -e 's/127.0.0.1/0.0.0.0/' /etc/mysql/my.cnf restart mysql mysql -uroot mysql <<< "GRANT ALL ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;"
「vagrant up」を実行すると、自動でサーバが構築されていきます
There were warnings and/or errors while loading your Vagrantfile for the machine 'web'. Your Vagrantfile was written for an earlier version of Vagrant, and while Vagrant does the best it can to remain backwards compatible, there are some cases where things have changed significantly enough to warrant a message. These messages are shown below. Warnings: * The 'v-root' shared folders have been renamed to 'vagrant-root'. Assuming you meant 'vagrant-root'... Bringing machine 'web' up with 'virtualbox' provider... Bringing machine 'db' up with 'virtualbox' provider... ==> web: Importing base box 'precise64'... ==> web: Matching MAC address for NAT networking... ==> web: Setting the name of the VM: vagrant_book_example_web_1518418409374_42956 ==> web: Clearing any previously set network interfaces... ==> web: Preparing network interfaces based on configuration... web: Adapter 1: nat web: Adapter 2: hostonly ==> web: Forwarding ports... web: 80 (guest) => 8080 (host) (adapter 1) web: 22 (guest) => 2222 (host) (adapter 1) ==> web: Booting VM... ==> web: Waiting for machine to boot. This may take a few minutes... web: SSH address: 127.0.0.1:2222 web: SSH username: vagrant
サーバ構築の自動化という理想郷
だいぶ前の話ですが、私は以前、Perlで Sledgeフレームワークな開発をしていたことがありました。しかし、PerlでSledgeが動く開発環境を作るのは、なかなかに大変でした。
特に、Sledgeが少し古いCPANモジュールを要求するので、なかなかにCPANインストールが通りません。悪戦苦闘しながらコマンドを叩き、無事に開発環境を構築することは出来たのですが、再現できる自信がないというジレンマに陥ります。
Vagrant を使用すれば、悪戦苦闘した過程も、プロビジョニングファイルに残ります。そのため、サーバを作り直すための時間とコストが、大幅に節約できます。全く同じ環境を、すぐに構築することができるのです。
その当時にVagrant があったとしたら、こんなに苦労することはなかっただろうな・・・と、思いつつ(苦笑)。
個人的には、Vagrant の最大のメリットは、環境構築の記録がファイルとして残ることで、再現性のあるサーバ構築をすることができる点にあると思います。
さいごに
これさえあれば「自分の環境では動くのに」がなくなりますね!
本書の冒頭に「明快かつシンプル、強力で有用」という性質をすべて兼ね備えたソフトウェアと書いてありますが、正にそう思います。 Vagrantは確かに凄いです。
- 作者: Mitchell Hashimoto,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/02/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (10件) を見る