Vagrantは、開発およびテスト環境の自動化を実現するツールです。設定ファイルを基に仮想マシンを構築し、必要なソフトウェアを自動的にインストールします。このツールは、複数のプロバイダー(VirtualBox、VMware、AWSなど)をサポートし、プロジェクトごとに一貫した環境を構築することを可能にします。
開発環境の構築では、異なるプログラミング言語や依存関係の管理が煩雑になることが一般的です。VagrantはVagrantfileを用いて環境定義をコード化し、プロビジョニングスクリプトで自動化します。これにより、チーム全体で標準化された開発環境を容易に共有できます。テスト環境においては、分散システムの統合テストに必要な複数の仮想マシンを単一ホスト上で起動し、自動化テストを実行可能です。さらにクラウドプロバイダー(AWS、OpenStack)を活用することで、大規模なテスト環境を構築することも可能です。
主な概念
- プロバイダー:仮想マシンの実行を担当するソフトウェア。VirtualBoxやVMwareが代表例です。
- ボックス:事前構築された仮想マシンイメージ。Vagrant Cloudや独自作成したボックスを使用できます。
- プロジェクト:Vagrantfileが配置されたディレクトリ。子プロジェクトの設定は親を継承・上書き可能です。
- Vagrantfile:Rubyで記述される設定ファイル。ボックス指定、ネットワーク設定、プロビジョニング設定が含まれます。
- プロビジョニング:VM起動後に実行される初期設定。シェルスクリプト、Chef、Puppetなどで実装可能です。
- プラグイン:Vagrantの機能拡張を可能にします。AWSやOpenStackのサポートはプラグインを通じて提供されます。
基本手順
まずプロバイダーとしてVirtualBoxをインストールします。
VirtualBox公式ダウンロード
Vagrantの最新バージョンをダウンロードします。Ubuntuリポジトリのバージョンは古いため、直接ダウンロードが推奨されます。
Vagrant公式ダウンロード
プロジェクトディレクトリを作成し、初期化します。
mkdir dev-environment
cd dev-environment
vagrant init ubuntu/focal64 https://app.vagrantup.com/ubuntu/boxes/focal64生成されたVagrantfileにプロビジョニング設定を追加します。
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/focal64"
config.vm.box_url = "https://app.vagrantup.com/ubuntu/boxes/focal64"
config.vm.provision "shell", path: "setup.sh"
endプロビジョニングスクリプトを作成します。
#!/bin/bash
sudo apt update
sudo apt install -y nginx php-fpm仮想マシンを起動します。
vagrant up接続して確認します。
vagrant ssh
ls /vagrantプロビジョニングを再実行する場合は以下のコマンドを使用します。
vagrant provision仮想マシンの終了方法:
- suspend:状態を保存して一時停止
- halt:通常のシャットダウン
- destroy:VMを完全に削除