Vagrantのインストールと設定 2
VirtualBoxのインストール
さっそく仮想環境を構築するため、VirtualBoxをインストールしていきましょう。インストールモジュールは以下のサイトからダウンロードできます。
執筆時点での最新版は、4.3.18です。Windows版を選択し、ダウンロードしたexeファイルを実行して、VirtualBoxをインストールしてください。
Vagrantのインストール
先ほど、インストールしたVirtualBoxを使って仮想環境をつくっていきます。VirtualBoxはGUIのツールがありますので、手動でゲストOSをインストールして環境を構築していくことも、もちろん可能ですが、ここではVagrant(ベイグラント)というツールを使って環境を構築します。
Vagrantは、仮想環境を自動で構築するためのツールです。VagrantはWindowsのほかにもMac OS Xや、UbuntuなどのLinuxで動作します。VagrantはRubyで実装されているのが特徴で、仮想環境を作成するための設定ファイルもRubyで記述していきます。
インストールモジュールは以下のサイトからダウンロードできます。
執筆時点での最新版は、1.6.5です。Windows版を選択し、ダウンロードしたファイルを実行して、Vagrantをインストールしてください。
なお、Vagrantが対応している仮想化ソフトはVirtualBoxのほかにVMwareがあります。Vagrantでは仮想化ソフトのことを「プロバイダー」と呼んでいます。またプラグインを使えば、ローカルマシンの環境だけでなく、クラウド(Amazon Web ServicesのEC2)でインスタンスを起動することもできます。
Vagrantを使うための準備
はじめに、Vagrantを使って仮想環境を作るためのもとになるフォルダを作成します。筆者の環境では、Eドライブにvagrant-sampleというフォルダを作成し、その中で作業を行っています。
Vagrantでは、すでにVagrant用にOSがインストールされた専用のディスクイメージを使用して仮想マシンを作成します。これを「Box」と呼びます。また、このBoxをもとに、「Vagrantfile」という設定ファイルに従って、仮想マシンを設定します。手動で仮想環境を構築するときの場合を考えると、OSイメージファイル(isoファイル)に相当するのがBoxで、パラメータシート(ミドルのバージョンや設定ファイルの内容などサーバの状態を定義したインフラ設計書)にあたるのがVagrantfileになります。
Vagrantはコマンドプロンプトを使って実行します。バージョンを確認するには、次のコマンドを実行します。インストールした1.6.5が表示されれば、インストールは完了です。
E:\> mkdir vagrant-sample E:\> cd vagrant-sample E:\vagrant-sample> vagrant -v Vagrant 1.6.5
では、この仮想マシンのもとになるBoxをvagrant box addコマンドで作成します。コマンド書式は以下の通りです。
vagrant box add [作成するBoxの名前] [Boxイメージの配布元URL]
たとえば、precise32という名前でBoxを作成する場合は次のようになります。
E:\vagrant-sample> vagrant box add precise32 http://dl.dropbox.com/u/13510779/lxc-raring-amd64-2013-07-12.box
上記のVagrantの公式サイトで配布されているBoxはUbuntuですが、次のサイトなどでインターネット上に公開されているものをそのまま使うこともできます。
作成したBoxを確認するには、vagrant box listコマンドを実行します。
E:\vagrant-sample>vagrant box list precise32 (virtualbox, 0)
作成したBoxを削除するときはvagrant box removeコマンドを実行します。コマンド書式は以下の通りです。
vagrant box remove [削除するBoxの名前]
たとえば、centosという名前のBoxを削除するときは次のようになります。
E:\vagrant-sample> vagrant box remove centos
アプリケーション開発者は、顧客から常に新しい価値をもつ機能を開発することを求められています。プログラミングの世界では、「あれやこれや書いているとなにがなんだか分からなくなったので、きちんと動いていた昨日のソースコードに一旦戻したい」ということが容易にできるため、アプリケーション開発者は、技術的に「あれやこれや」への挑戦がし易くなっています。
一方、インフラエンジニアは、顧客から常に安定した状態でシステムを稼働し続けることを求められています。特にオンプレミス環境でのインフラエンニアは、1つのものを変化させながら管理しているので「あれやこれや」がしづらくなっていました。ましてや、システムがミッションクリティカルであればあるほど、安定稼働している本番環境に構成変更をしたくないため、保守的な考え方の人も多く、しばしシステム開発の現場では、アプリケーションエンジアとインフラエンジニアで衝突することもありました。
しかしながら、クラウドに代表される仮想化技術によってインフラエンジニアはこれまで縛られていたハードウエアの制約から解放され、アプリケーション開発者と同じように、構築/変更/破棄が容易になったため、技術的なチャレンジへのハードルが大きく下がりました。
結果として、これまではインフラエンジニアの仕事だった実行環境の構築などが、本連載でご紹介する構成管理ツールなどを使えば、アプリケーション開発者でできるようになりました。逆にインフラエンジニアは、インフラの知識だけでなく、アプリケーション開発者のようなコーディング力が必要になっています。そのため業務分掌自体があいまいになっており、両者がノウハウを持ち寄り、互いに協力してより良いシステムを構築/開発していくことが求められています。この流れは「DevOps」と呼ばれています。
ただし、大規模なシステム開発の場合、アプリケーション開発者(Dev)とインフラエンジニア(Ops)は別部門(または別会社)が担当することが多く、DevOpsを推進するための、制度やマネジメントなどの問題も解決しておくことが不可欠です。
おわりに
今回の記事では、コードによるインフラ構成管理の基礎とVagrantをつかった仮想開発環境の構築を行う準備について紹介しました。
次回は、開発環境を作成するためのVagrantfileの具体的なコーディングの方法について紹介します。