WEB Engineer Architect Tips

WEBサービス開発における、技術やアーキテクチャ、ツールにテクニックなど……困ったときに思わずちょい見したくなるようなTips集です。

VirtualBox/Vagrant/Chefを利用したImmutable Infrastructureの実現 Part.1

サーバーをプログラミングする時代がやってきた!

昨今、インフラのコード化が叫ばれています。
今までWEBサービスの開発者は、当然の様にサーバー上のOSで開発/運用をおこなってきました。
ですが、この”Immutable Infrastructure”という考え方はそれを一変させました。
 ・サービス提供サーバーの仮想化
 ・サーバー構築の自動化(コード化)
というキーワードを元に、特定のツールを使えばどのようなOSやスペックのサーバーであっても、
全く同じ環境を即座に構築することができるようになりました。数年前から考えると、恐るべき進化ですよね。

この技術はどのように実現されているのでしょうか?そして、どのように使って行けば良いのでしょうか?
本連載では、この技術を”ざっくり理解・利用できる”ようになることを目標として紹介いたします。
VirtualBoxVagrant、Chefといった新時代のInfra系ツールを用いて、自動仮想環境構築をおこなっていきましょう。

VirtualBoxとは?


「仮想OSをWindowsMacなどの物理環境上で使う」ためのツールです。

例えば、今使っているノートパソコンの環境がWindowsだとします。
そして、CentOSを使って見たいと考えたとします。すると、
 1.VirtualBoxWindowsにインストール
 2.VirtualBox上でCentOSを起動
この2Stepを踏むだけで、仮想的にCentOSを使う環境が出来てしまいます。


※分かりやすさのために「物理環境上」と記載しておりますが、
 正確に言うと、VPSクラウドなどの仮想環境上でも本ツールを使うことはできます。


Vagrantとは?


「仮想OSを簡単に利用するためのフロントエンドツール」です。
※現在では更にツールとしてのスコープを広げているようですが、簡単のためここではこう記載します。

仮想OSはVirtualBox単体でも使うことは出来ますが、
 ・ネットワークの設定などは、仮想OSを作る度に手動でおこなう必要がある
 ・VirtualBoxGUIでの動作が前面に押し出たツールである
ということもあり、仮想OSの利用をもっと簡単に、できれば自動で行いたいという需要がありました。


そこで使われるようになったのが、Vagrantです。
Vagrantを使えば、ネットワークなどの環境構築をコードを用いてより簡単に実施することができます。
また、仮想OSとホストOS(VirtualBoxをインストールしている土台となるOS)の間でのファイル共有をすることができます。
この機能を使うと、次に紹介するChefとの組み合わせをおこなうことでより絶大な効果を発揮することができます(後述)。


Chefとは?


「仮想OS上に自動でソフトウェアのインストールや設定をおこなってくれるツール」です。

サービスを作る際には、nginxやMySQLといったミドルウェアから、
Railsといったフレームワーク、td-agentなどのツールまで様々なものをインストールするかと思います。
こういったものを全て自動でインストールすることが出来、設定もおこなってくれたら、これ以上なく楽ですよね?
それを実現するためのツール、それがChefです。
具体的には、用意しておいたRecipeと呼ばれる手順書を元にして、全て自動でおこなってくれるのです。

ここで、Vagrantで事前にホストOS上で手順書の設定をおこなっておけば、
仮想OSの立ち上げからサーバーの環境構築に至るまで全てを自動でおこなってくれます。

終わりに

それぞれのツールの関係性を表すと、以下の様な絵になります。


いかがでしたでしょうか?
それぞれのキーワードは断片的に聞いたことがあっても、実際にその関係性を理解するのは中々難しいかと思います。

今回は「へーそういうもんなんだな」程度に理解しておいて、
次回以降、具体的にオペレーションをしながら、どういう関係性なのか?を体感していきましょう。