LoginSignup
61
62

More than 5 years have passed since last update.

Vagrantで、仮想環境を配布するようなシチュエーションのお話

Last updated at Posted at 2016-02-02

やりたいこと

  • 複数人で開発環境を共有したり、PHPなどのバージョンが異なるケースについて試験したい。
  • 上記のようなことができるサーバを、社内ローカルに用意したい。
  • さらに、開発チームのメンバー向けに「標準環境」として必要に応じて配布したい。

というわけで・・・

  • Vagrantを使って、boxとして仮想サーバを配布したい。
  • 手元のPCで仮想サーバを構築した。
  • それをローカル内の共有サーバに配置し、メンバー内で共有したい。
  • ついでに言えば、開発チームのメンバーで必要に応じて仮想環境を共有させたい。(これ使ってね的に)

前提条件

  • 配布する仮想環境を開発しているマシンを「配布元」、その仮想環境をインポートして同じ環境を使うマシンを「配布先」とします。
  • 配布元にも配布先にも、Vagrantがインストールされていて使用できる状態です。
  • 私は、配布元、配布先ともに、仮想マシンを動かすツールとしてViatualboxを使っています。
  • 配布する仮想マシンのOSは CentOS6.7 (bento)です。

実現手順

  1. (配布元)配布したい仮想サーバをboxとしてエクスポートする
  2. (配布先)boxをインポートし、仮想サーバを作成する
  3. (配布先)Vagrantfileなどを修正する

(配布元)配布したい仮想サーバをboxとしてエクスポートする

配布元のVagrantfileが存在するディレクトリで(を参照して)、vagrant package を実施する。

参考:Vagrant日本語ドキュメント

配布元のコマンドライン
$ vagrant package --output demo_cent67.box

上記のパターンでは、demo_cent67.box というファイル名で出力されます。

(配布先)boxをインポートし、仮想サーバを作成する

配布先にも、VagrantやVirtualboxなどの環境が整っているとします。

配布先のコマンドライン
$ vagrant box add lamp_bento demo_cent67.box

上記のパターンでは box一覧に、lamp_bentoと言う名前で登録します。

box一覧への追加を確認

配布先のコマンドライン
$ vagrant box list
bento/centos-6.7 (virtualbox, 2.2.2)
lamp_plane_bento (virtualbox, 0)

上記のように、追加されていれば OK

そして、普通に追加。

配布先のコマンドライン
$ vagrant init lamp_plane_bento

(配布先)Vagrantfileなどを修正する。

  • Vagrantfileは、デフォルトで生成されるので、(配布元)の環境に応じた設定をする必要がある。
  • その際に、ネットワーク周りのエラーが発生しやすい。

と言うことで、はまりやすいです。

Vagrantfile の 修正例

配布先でも、配布元で使っていた環境に合わせたい場合でも、
IPアドレスなどには留意する必要があります。

配布元のVagrantfileの例
Vagrant.configure(2) do |config|
  config.vm.box = "bento/centos-6.7"

  config.vm.provider "virtualbox" do |v|
    v.name = "Hello Vagrant"
    v.cpus = 2
    v.memory = 1024
    v.customize ["modifyvm", :id, "--vram","16"]
  end

  #Private  network
  config.vm.network "public_network", ip: "192.168.100.200", bridge: 'en0: Wi-Fi (AirPort)'
end

配布先のVagrantfileの例
Vagrant.configure(2) do |config|
  config.vm.box = "bento/centos-6.7"

  config.vm.provider "virtualbox" do |v|
    v.name = "Hello Vagrant Clone"
    v.cpus = 2
    v.memory = 1024
    v.customize ["modifyvm", :id, "--vram","16"]
  end

  #Private  network
  config.vm.network "public_network", ip: "192.168.100.201", bridge: 'en0: Wi-Fi (AirPort)'
end

コピペでやろうと思った? エラーが出やすいけど。

ネットワークまわりの警告

配布元で、boxをエクスポートする際に

配布先のターミナル
==> default: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

ARPCHECK=no /sbin/ifup eth1 2> /dev/null

Stdout from the command:

Device eth1 does not seem to be present, delaying initialization.


Stderr from the command:

一旦Vagrantのゲストにアクセスし、対応する。

上記のエラーが出ていても、仮想マシン自体は起動しているので Vagrant ssh でアクセスすることは可能です。

仮想マシン上でコマンド入力
$ sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules

仮想マシン上にて、上記コマンド入力後、ターミナル画面で以下のコマンドを入力

配布先のターミナル
$ vagrant reload

新しい設定が反映されます。

これで、「仮想環境を必要に応じて複製、配布」ができるようになりました!

参考

Vagrantのboxに少しだけ手を加えたものをboxとして取っておきたい
http://qiita.com/t_cyrill/items/ef9cb2b615bfb326f79c

macで作られたvagrant boxをもらったときに出るネットワークエラーの対処法
http://qiita.com/tarr1124/items/8276e609c0f7cdec79e7

61
62
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
62