Vagrant
関連記事
Vagrant は仮想化された開発環境を管理・設定するためのツールです。
Vagrant には'プロバイダー'という概念があり、仮想化エンジンとその API を示します。一番人気があってサポートの手厚いプロバイダーは Virtualbox です。他に libvirt
, kvm
, lxc
, vmware
などのプラグインが存在します。
基本的に Vagrant は Vagrantfile
を使って仮想化するマシンを定義します。単一の Vagrantfile で複数のマシンを定義することができます。
Wikipedia:Vagrant も参照してください。
目次
Vagrant のインストール
公式リポジトリから vagrant をインストールしてください。
Vagrant Cloud を利用したい場合 AUR から vagrant-debAUR をインストールする必要があります。
Vagrant Cloud のライセンスによる制限のため、公式リポジトリの community バージョンを使って login コマンドをパッケージすることはできません。
プラグイン
パワフルなプラグインをサポートするために Vagrant はミドルウェアアーキテクチャを採用しています。
プラグインは Vagrant に組み込まれているプラグインマネージャでインストール可能です:
$ vagrant plugin install vagrant-vbguest
vagrant-kvm
このプラグインは仮想化プロバイダーとして KVM をサポートします。
Vagrant は必要なものが全て揃った多彩な環境を /opt
にインストールしますが、これは Arch のシステムの Ruby やその他のライブラリと複雑に干渉します。(Ruby との問題、Curl ライブラリとの問題)
vagrant-kvm wiki にある Arch Linux 向けの完全なインストールガイド を参照してインストールしてください。
vagrant-libvirt
このプラグインは Libvirt サポートを追加します。
今のところ vagrant-kvm プラグインと同じ ruby の問題を抱えています。vagrant 1.6.5 現在、次のコマンドによって vagrant-libvirt は正しくインストールされます:
$ CONFIGURE_ARGS="with-libvirt-include=/usr/include/libvirt with-libvirt-lib=/usr/lib" vagrant plugin install vagrant-libvirt
vagrant-lxc
まず公式リポジトリから lxc をインストールして、それから:
$ vagrant plugin install vagrant-lxc
次に、このコメントのようにして lxc と systemd ユニットファイルを設定してください。以下のような Vagrantfile
でこのプラグインを使うことができます:
VAGRANTFILE_API_VERSION = "2" Vagrant.configure("2") do |config| config.vm.define "main" do |config| config.vm.box = 'http://bit.ly/vagrant-lxc-wheezy64-2013-10-23' config.vm.provider :lxc do |lxc| lxc.customize 'cgroup.memory.limit_in_bytes', '512M' end config.vm.provision :shell do |shell| shell.path = 'provision.sh' end end end
シェルスクリプトの provision.sh
ファイルは Vagrantfile
と同じ場所に配置する必要があります。適切な設定を行なって下さい。例えば、上記の box にパッケージされている puppet を削除するには:
rm /etc/apt/sources.list.d/puppetlabs.list apt-get purge -y puppet facter hiera puppet-common puppetlabs-release ruby-rgen
プロビジョニング
プロビジョナーを使うことでソフトウェアを自動的にインストールして、vagrant up の中で行う設定を変更・自動化することができます。最もよく使われているプロビジョナーは公式リポジトリに入っている puppet と AUR からインストールできる chefAUR の2つです。
Vagrant の Base Box
以下は色々な vagrant base box の入手場所の一覧で、目的は様々です: 開発, テスト, 本番環境。
- よくメンテされている最新の Vagrant 用 Arch Linux x86_64 base box
- 同一の Arch Linux x86_64 base box は次を実行することで Vagrant Cloud から取得可能:
vagrant init terrywang/archlinux
- Vagrant Cloud は Vagrant box のための HashiCorp の公式サイトです。ユーザーが投稿した box を閲覧したり自分の box をアップロードすることができます。単一の Vagrant Cloud box で複数のプロバイダーとバージョニングをサポートすることができます。
- vagrantbox.es
vagrant base box のリスト。Gareth Rushgrove @garethr によって開始され Nginx を使って Heroku でホストされています。こちらのストーリーを見て下さい: Vagrantbox.es Story。
- Opscode bento
日本語で bento が何を意味するかは知っていますよね?ここでは、弁当箱ではなく cookbook や private chef (Chef Server と Client) をテストするのに使える極めて便利な base box を指します。含まれているディストリビューション: Ubuntu Server, Debian, CentOS, Fedora, FreeBSD。
- Puppet Labs Vagrant Boxes
すぐに使える vagrant box 集。Puppet Labs の人々によって作成。
- Vagrant Ubuntu Cloud Images
2013年1月から存在します。何らかの理由で Canonical は公式には喧伝していません、おそらくまだベータなのでしょう。バニラなイメージなので、Chef や Puppet がないとあまり役には立ちません。