「Vagrant」の版間の差分
Kusakata.bot (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
Kusakata.bot (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
||
(他の1人の利用者による、間の1版が非表示) | |||
16行目: | 16行目: | ||
== インストール == |
== インストール == |
||
− | + | {{Pkg|vagrant}} パッケージを[[インストール]]してください。 |
|
== プラグイン == |
== プラグイン == |
||
28行目: | 28行目: | ||
=== vagrant-libvirt === |
=== vagrant-libvirt === |
||
− | このプラグインは Vagrant に libvirt プロバイダを追加します。プラグインをインストールする前に {{Pkg|gcc}} と {{Pkg|make}} パッケージをインストールする必要があり、libvirt プロバイダを使うには [[libvirt]] と関連するパッケージをインストール・設定する必要があります |
+ | このプラグインは Vagrant に libvirt プロバイダを追加します。プラグインをインストールする前に {{Pkg|gcc}} と {{Pkg|make}} パッケージをインストールする必要があり、libvirt プロバイダを使うには [[libvirt]] と関連するパッケージをインストール・設定する必要があります: |
+ | $ vagrant plugin install vagrant-libvirt |
||
− | 2016年9月現在 (Vagrant バージョン 1.8.5)、Arch Linux では通常にインストールすることができません。以下の方法でインストールしてください: |
||
+ | {{Note| |
||
− | $ CONFIGURE_ARGS='with-ldflags=-L/opt/vagrant/embedded/lib with-libvirt-include=/usr/include/libvirt with-libvirt-lib=/usr/lib' \ |
||
+ | * 2017年11月現在 (Vagrant バージョン 2.0.1-1)、以下の方法はもはや必要ありません。通常通りにプラグインをインストールしてください。 |
||
− | GEM_HOME=~/.vagrant.d/gems GEM_PATH=$GEM_HOME:/opt/vagrant/embedded/gems PATH=/opt/vagrant/embedded/bin:$PATH \ |
||
+ | * 2016年9月現在 (Vagrant バージョン 1.8.5)、Arch Linux では通常にインストールすることができません。以下の方法でインストールしてください: |
||
− | vagrant plugin install vagrant-libvirt |
||
+ | |||
+ | {{bc|<nowiki>$ 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</nowiki>}} |
||
{{ic|incompatible library version}} によって {{ic|vagrant up}} が失敗してしまうのは [https://github.com/vagrant-libvirt/vagrant-libvirt/issues/541 バグ #541] が原因です。[https://gist.github.com/j883376/d90933620c7ed14daa4e0963e005377f reinstall-vagrant-libvirt.sh] を作成・実行することで解決できます。 |
{{ic|incompatible library version}} によって {{ic|vagrant up}} が失敗してしまうのは [https://github.com/vagrant-libvirt/vagrant-libvirt/issues/541 バグ #541] が原因です。[https://gist.github.com/j883376/d90933620c7ed14daa4e0963e005377f reinstall-vagrant-libvirt.sh] を作成・実行することで解決できます。 |
||
+ | |||
+ | * 2017年6月現在 (Vagrant バージョン 1.9.5-1)、プラグインの通常のインストールは失敗し、バージョン 1.8.5 用の解決方法は Arch Linux では上手く機能しません [https://gist.github.com/j883376/d90933620c7ed14daa4e0963e005377f#gistcomment-2115266]。vagrant-substrate をダウングレードすることで問題は解決します。}} |
||
プラグインをインストールしたら {{ic|libvirt}} プロバイダが使えるようになります: |
プラグインをインストールしたら {{ic|libvirt}} プロバイダが使えるようになります: |
||
44行目: | 50行目: | ||
=== vagrant-lxc === |
=== vagrant-lxc === |
||
− | まず |
+ | まず {{Pkg|lxc}} パッケージをインストールして、それから: |
$ vagrant plugin install vagrant-lxc |
$ vagrant plugin install vagrant-lxc |
||
82行目: | 88行目: | ||
== プロビジョニング == |
== プロビジョニング == |
||
− | ''プロビジョナー''を使うことでソフトウェアを自動的にインストールして、vagrant up の中で行う設定を変更・自動化することができます。最もよく使われているプロビジョナーは |
+ | ''プロビジョナー''を使うことでソフトウェアを自動的にインストールして、vagrant up の中で行う設定を変更・自動化することができます。最もよく使われているプロビジョナーは {{Pkg|puppet}} と {{AUR|chef-dk}} パッケージの2つです。 |
== Vagrant の Base Box == |
== Vagrant の Base Box == |
||
以下は色々な vagrant base box の入手場所の一覧で、目的は様々です: 開発, テスト, 本番環境。 |
以下は色々な vagrant base box の入手場所の一覧で、目的は様々です: 開発, テスト, 本番環境。 |
||
+ | |||
+ | * [https://app.vagrantup.com/archlinux/boxes/archlinux 公式の Arch Linux vagrant boxes]。ビルドするときに使用された packerfile とプロビジョニングスクリプトは [https://github.com/archlinux/arch-boxes GitHub プロジェクト] にあります。 |
||
* よくメンテされている最新の Vagrant 用 [https://github.com/terrywang/vagrantboxes/blob/master/archlinux-x86_64.md Arch Linux x86_64] base box |
* よくメンテされている最新の Vagrant 用 [https://github.com/terrywang/vagrantboxes/blob/master/archlinux-x86_64.md Arch Linux x86_64] base box |
||
102行目: | 110行目: | ||
* [http://cloud-images.ubuntu.com/vagrant/ Vagrant Ubuntu Cloud Images]<br/>2013年1月から存在します。何らかの理由で Canonical は公式には喧伝していません、おそらくまだベータなのでしょう。バニラなイメージなので、Chef や Puppet がないとあまり役には立ちません。 |
* [http://cloud-images.ubuntu.com/vagrant/ Vagrant Ubuntu Cloud Images]<br/>2013年1月から存在します。何らかの理由で Canonical は公式には喧伝していません、おそらくまだベータなのでしょう。バニラなイメージなので、Chef や Puppet がないとあまり役には立ちません。 |
||
− | * [https://github.com/elasticdog/packer-arch GitHub の packer-arch プロジェクト] は {{Pkg|packer-io}} を使用して公式 iso イメージから軽量な Arch Linux の Vagrant イメージを作成する設定ファイルを提供しています。 |
+ | * [https://github.com/elasticdog/packer-arch GitHub の packer-arch プロジェクト] は {{Pkg|packer-io}}{{Broken package link|置換パッケージ: {{Pkg|packer}}}} を使用して公式 iso イメージから軽量な Arch Linux の Vagrant イメージを作成する設定ファイルを提供しています。 |
== トラブルシューティング == |
== トラブルシューティング == |
||
112行目: | 120行目: | ||
=== NFS のマウント時に 'vagrant up' がフリーズする (Mounting NFS shared folders...) === |
=== NFS のマウント時に 'vagrant up' がフリーズする (Mounting NFS shared folders...) === |
||
− | {{Pkg| |
+ | {{Pkg|nfs-utils}} パッケージをインストールすることで問題は解決します。 |
=== Error starting network 'default': internal error: Failed to initialize a valid firewall backend === |
=== Error starting network 'default': internal error: Failed to initialize a valid firewall backend === |
||
ファイアウォールの依存パッケージがインストールされていません。{{pkg|ebtables}} と {{pkg|dnsmasq}} パッケージを[[インストール]]して systemd サービスの {{ic|libvirtd}} を[[再起動]]してください。 |
ファイアウォールの依存パッケージがインストールされていません。{{pkg|ebtables}} と {{pkg|dnsmasq}} パッケージを[[インストール]]して systemd サービスの {{ic|libvirtd}} を[[再起動]]してください。 |
||
+ | |||
+ | === vagrant ゲストに ssh でログインできない === |
||
+ | BIOS で仮想化が有効になっているか確認してください。vagrant によって仮想マシンが起動したと表示されたために仮想化が上手くいっていると思われるかもしれませんが、一部の vagrant ボックス (例: tantegerda1/archlinux) では cpu の仮想化機能が足りないために ssh の起動まで進められないことがあります。 |
||
== 参照 == |
== 参照 == |
2018年8月30日 (木) 00:48時点における最新版
関連記事
Vagrant は仮想化された開発環境を管理・設定するためのツールです。
Vagrant には'プロバイダー'という概念があり、仮想化エンジンとその API を示します。一番人気があってサポートの手厚いプロバイダーは Virtualbox です。他に libvirt
, kvm
, lxc
, vmware
などのプラグインが存在します。
基本的に Vagrant は Vagrantfile
を使って仮想化するマシンを定義します。単一の Vagrantfile で複数のマシンを定義することができます。
インストール
プラグイン
パワフルなプラグインをサポートするために Vagrant はミドルウェアアーキテクチャを採用しています。
プラグインは Vagrant に組み込まれているプラグインマネージャでインストール可能です。インストールするプラグインを複数指定することもできます:
$ vagrant plugin install vagrant-vbguest vagrant-share
vagrant-libvirt
このプラグインは Vagrant に libvirt プロバイダを追加します。プラグインをインストールする前に gcc と make パッケージをインストールする必要があり、libvirt プロバイダを使うには libvirt と関連するパッケージをインストール・設定する必要があります:
$ vagrant plugin install vagrant-libvirt
プラグインをインストールしたら 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 の中で行う設定を変更・自動化することができます。最もよく使われているプロビジョナーは puppet と chef-dkAUR パッケージの2つです。
Vagrant の Base Box
以下は色々な vagrant base box の入手場所の一覧で、目的は様々です: 開発, テスト, 本番環境。
- 公式の Arch Linux vagrant boxes。ビルドするときに使用された packerfile とプロビジョニングスクリプトは GitHub プロジェクト にあります。
- よくメンテされている最新の 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 がないとあまり役には立ちません。
- GitHub の packer-arch プロジェクト は packer-io[リンク切れ: 置換パッケージ: packer] を使用して公式 iso イメージから軽量な Arch Linux の Vagrant イメージを作成する設定ファイルを提供しています。
トラブルシューティング
ホストと vagrant ボックスで ping が通らない (ホストオンリーネットワーク)
ときどき、ホストオンリーネットワークが機能しないという問題が発生することがあります。ホストの vboxnet インターフェイスに ip が割り当てられず、ホストが vagrant ボックスに ping できなかったり、ボックスの方からホストに ping できなかったりします。この問題は net-tools をインストールすることで解決します。このスレッド を参照してください。
ホストの Arch から仮想マシンでネットワークを使うことができない
バージョン 1.8.4 現在、Vagrant は仮想マシンとブリッジ接続するのに古い route
コマンドを使って仮想ネットワークインターフェイスのルーティングを設定します。route
がインストールされていない場合、ホスト OS から仮想マシンにアクセスできなくなります。route コマンドが含まれている net-tools パッケージをインストールしてください。
nfs-utils パッケージをインストールすることで問題は解決します。
Error starting network 'default': internal error: Failed to initialize a valid firewall backend
ファイアウォールの依存パッケージがインストールされていません。ebtables と dnsmasq パッケージをインストールして systemd サービスの libvirtd
を再起動してください。
vagrant ゲストに ssh でログインできない
BIOS で仮想化が有効になっているか確認してください。vagrant によって仮想マシンが起動したと表示されたために仮想化が上手くいっていると思われるかもしれませんが、一部の vagrant ボックス (例: tantegerda1/archlinux) では cpu の仮想化機能が足りないために ssh の起動まで進められないことがあります。