「Vagrant」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
2行目: 2行目:
 
[[en:Vagrant]]
 
[[en:Vagrant]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related2|VirtualBox|VirtualBox}}
+
{{Related|VirtualBox}}
{{Related2|Libvirt|Libvirt}}
+
{{Related|Libvirt}}
{{Related2|KVM|KVM}}
+
{{Related|KVM}}
{{Related2|Docker|Docker}}
+
{{Related|Docker}}
 
{{Related articles end}}
 
{{Related articles end}}
   
14行目: 14行目:
 
基本的に Vagrant は {{ic|Vagrantfile}} を使って仮想化するマシンを定義します。単一の Vagrantfile で複数のマシンを定義することができます。
 
基本的に Vagrant は {{ic|Vagrantfile}} を使って仮想化するマシンを定義します。単一の Vagrantfile で複数のマシンを定義することができます。
   
  +
== インストール ==
[[Wikipedia:Vagrant]] も参照してください。
 
   
  +
[[公式リポジトリ]]から {{Pkg|vagrant}} パッケージを[[インストール]]してください。
== Vagrant のインストール ==
 
 
[[公式リポジトリ]]から {{Pkg|vagrant}} をインストールしてください。
 
   
 
== プラグイン ==
 
== プラグイン ==
30行目: 28行目:
 
=== vagrant-libvirt ===
 
=== vagrant-libvirt ===
   
  +
このプラグインは Vagrant に libvirt プロバイダを追加します。プラグインをインストールする前に {{Pkg|gcc}} と {{Pkg|make}} パッケージをインストールする必要があり、libvirt プロバイダを使うには [[libvirt]] と関連するパッケージをインストール・設定する必要があります。
このプラグインは [[Libvirt|Libvirt]] サポートを追加します。
 
   
  +
2016年9月現在 (Vagrant バージョン 1.8.5)、Arch Linux では通常にインストールすることができません。以下の方法でインストールしてください:
今のところ 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
 
  +
$ CONFIGURE_ARGS='with-ldflags=-L/opt/vagrant/embedded/lib with-libvirt-include=/usr/include/libvirt with-libvirt-lib=/usr/lib' \
  +
GEM_HOME=~/.vagrant.d/gems GEM_PATH=$GEM_HOME:/opt/vagrant/embedded/gems PATH=/opt/vagrant/embedded/bin:$PATH \
  +
vagrant plugin install vagrant-libvirt
  +
  +
{{ic|incompatible library version}} によって {{ic|vagrant up}} が失敗してしまうのは [https://github.com/vagrant-libvirt/vagrant-libvirt/issues/541 バグ #541] が原因です。[https://gist.github.com/robled/070e1922816bbe983623#file-reinstall-vagrant-libvirt-sh reinstall-vagrant-libvirt.sh] を作成・実行することで解決できます。
  +
  +
プラグインをインストールしたら {{ic|libvirt}} プロバイダが使えるようになります:
  +
  +
$ vagrant up --provider=libvirt
   
 
=== vagrant-lxc ===
 
=== vagrant-lxc ===
75行目: 82行目:
 
== プロビジョニング ==
 
== プロビジョニング ==
   
''プロビジョナー''を使うことでソフトウェアを自動的にインストールして、vagrant up の中で行う設定を変更・自動化することができます。最もよく使われているプロビジョナーは[[公式リポジトリ]]に入っている {{Pkg|puppet}} と [[AUR|AUR]] からインストールできる {{AUR|chef}} の2つです。
+
''プロビジョナー''を使うことでソフトウェアを自動的にインストールして、vagrant up の中で行う設定を変更・自動化することができます。最もよく使われているプロビジョナーは[[公式リポジトリ]]に入っている {{Pkg|puppet}} と [[AUR]] からインストールできる {{AUR|chef-dk}} の2つです。
   
 
== Vagrant の Base Box ==
 
== Vagrant の Base Box ==
98行目: 105行目:
 
=== ホストと vagrant ボックスで ping が通らない (ホストオンリーネットワーク) ===
 
=== ホストと vagrant ボックスで ping が通らない (ホストオンリーネットワーク) ===
 
ときどき、ホストオンリーネットワークが機能しないという問題が発生することがあります。ホストの vboxnet インターフェイスに ip が割り当てられず、ホストが vagrant ボックスに ping できなかったり、ボックスの方からホストに ping できなかったりします。この問題は {{Pkg|net-tools}} をインストールすることで解決します。[https://bbs.archlinux.org/viewtopic.php?pid=1178607#p1178607 このスレッド] を参照してください。
 
ときどき、ホストオンリーネットワークが機能しないという問題が発生することがあります。ホストの vboxnet インターフェイスに ip が割り当てられず、ホストが vagrant ボックスに ping できなかったり、ボックスの方からホストに ping できなかったりします。この問題は {{Pkg|net-tools}} をインストールすることで解決します。[https://bbs.archlinux.org/viewtopic.php?pid=1178607#p1178607 このスレッド] を参照してください。
  +
  +
=== ホストの Arch から仮想マシンでネットワークを使うことができない ===
  +
バージョン 1.8.4 現在、Vagrant は仮想マシンとブリッジ接続するのに古い {{ic|route}} コマンドを使って仮想ネットワークインターフェイスのルーティングを設定します。{{ic|route}} がインストールされていない場合、ホスト OS から仮想マシンにアクセスできなくなります。route コマンドが含まれている {{Pkg|net-tools}} パッケージをインストールしてください。
  +
  +
=== NFS のマウント時に 'vagrant up' がフリーズする (Mounting NFS shared folders...) ===
  +
{{Pkg|net-tools}} パッケージをインストールすることで問題は解決します。
  +
  +
=== Error starting network 'default': internal error: Failed to initialize a valid firewall backend ===
  +
ファイアウォールの依存パッケージがインストールされていません。{{pkg|ebtables}} と {{pkg|dnsmasq}} パッケージを[[インストール]]して systemd サービスの {{ic|libvirtd}} を[[再起動]]してください。
   
 
== 参照 ==
 
== 参照 ==
 
* [http://docs.vagrantup.com/v2/getting-started/project_setup.html 公式の Vagrant ドキュメント]
 
* [http://docs.vagrantup.com/v2/getting-started/project_setup.html 公式の Vagrant ドキュメント]
  +
* [[Wikipedia:ja:Vagrant (ソフトウェア)]]

2016年12月5日 (月) 22:28時点における版

関連記事

Vagrant は仮想化された開発環境を管理・設定するためのツールです。

Vagrant には'プロバイダー'という概念があり、仮想化エンジンとその API を示します。一番人気があってサポートの手厚いプロバイダーは Virtualbox です。他に libvirt, kvm, lxc, vmware などのプラグインが存在します。

基本的に Vagrant は Vagrantfile を使って仮想化するマシンを定義します。単一の Vagrantfile で複数のマシンを定義することができます。

インストール

公式リポジトリから vagrant パッケージをインストールしてください。

プラグイン

パワフルなプラグインをサポートするために Vagrant はミドルウェアアーキテクチャを採用しています

プラグインは Vagrant に組み込まれているプラグインマネージャでインストール可能です。インストールするプラグインを複数指定することもできます:

$ vagrant plugin install vagrant-vbguest vagrant-share

vagrant-libvirt

このプラグインは Vagrant に libvirt プロバイダを追加します。プラグインをインストールする前に gccmake パッケージをインストールする必要があり、libvirt プロバイダを使うには libvirt と関連するパッケージをインストール・設定する必要があります。

2016年9月現在 (Vagrant バージョン 1.8.5)、Arch Linux では通常にインストールすることができません。以下の方法でインストールしてください:

$ CONFIGURE_ARGS='with-ldflags=-L/opt/vagrant/embedded/lib with-libvirt-include=/usr/include/libvirt with-libvirt-lib=/usr/lib' \
  GEM_HOME=~/.vagrant.d/gems GEM_PATH=$GEM_HOME:/opt/vagrant/embedded/gems PATH=/opt/vagrant/embedded/bin:$PATH \
  vagrant plugin install vagrant-libvirt

incompatible library version によって vagrant up が失敗してしまうのは バグ #541 が原因です。reinstall-vagrant-libvirt.sh を作成・実行することで解決できます。

プラグインをインストールしたら libvirt プロバイダが使えるようになります:

$ vagrant up --provider=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-kvm (非推奨)

このプラグインは仮想化プロバイダーとして KVM をサポートします。

Vagrant は必要なものが全て揃った多彩な環境を /opt にインストールしますが、これは Arch のシステムの Ruby やその他のライブラリと複雑に干渉します。(Ruby との問題Curl ライブラリとの問題

vagrant-kvm wiki にある Arch Linux 向けの完全なインストールガイド を参照してインストールしてください。

プロビジョニング

プロビジョナーを使うことでソフトウェアを自動的にインストールして、vagrant up の中で行う設定を変更・自動化することができます。最もよく使われているプロビジョナーは公式リポジトリに入っている puppetAUR からインストールできる chef-dkAUR の2つです。

Vagrant の Base Box

以下は色々な vagrant 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。
  • Vagrant Ubuntu Cloud Images
    2013年1月から存在します。何らかの理由で Canonical は公式には喧伝していません、おそらくまだベータなのでしょう。バニラなイメージなので、Chef や Puppet がないとあまり役には立ちません。

トラブルシューティング

ホストと vagrant ボックスで ping が通らない (ホストオンリーネットワーク)

ときどき、ホストオンリーネットワークが機能しないという問題が発生することがあります。ホストの vboxnet インターフェイスに ip が割り当てられず、ホストが vagrant ボックスに ping できなかったり、ボックスの方からホストに ping できなかったりします。この問題は net-tools をインストールすることで解決します。このスレッド を参照してください。

ホストの Arch から仮想マシンでネットワークを使うことができない

バージョン 1.8.4 現在、Vagrant は仮想マシンとブリッジ接続するのに古い route コマンドを使って仮想ネットワークインターフェイスのルーティングを設定します。route がインストールされていない場合、ホスト OS から仮想マシンにアクセスできなくなります。route コマンドが含まれている net-tools パッケージをインストールしてください。

NFS のマウント時に 'vagrant up' がフリーズする (Mounting NFS shared folders...)

net-tools パッケージをインストールすることで問題は解決します。

Error starting network 'default': internal error: Failed to initialize a valid firewall backend

ファイアウォールの依存パッケージがインストールされていません。ebtablesdnsmasq パッケージをインストールして systemd サービスの libvirtd再起動してください。

参照