ponkiti's blog

主に自分用、イベント参加メモや備忘録として利用

1つのBoxを利用して複数のVMを立ち上げる

少し前にやろうとして、エラーが出て立ち上がらない、という状態で止まっていたので再挑戦。

参考にしたサイト

Vagrantをつかって仮想マシンを管理する - momoto.github.io

エラー内容

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
There are errors in the configuration of this machine. Please fix
the following errors and try again:

vm:
* A box must be specified.

原因

単純に定義を記載する場所を間違えていた。コメントアウト文が多すぎてendがファイル末尾に書いてあることに気付かなかったのが原因。Vagrant.configureend文の重複のためのエラー。あほすぎる・・・。

Vagrantfile内のVagrant.configure(VAGRANTFILE_API_VERSION) do |config|endの間に定義を記載すればOK。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# All Vagrant configuration is done here. The most common configuration
# options are documented and commented below. For a complete reference,
# please see the online documentation at vagrantup.com.

# Every Vagrant virtual environment requires a box to build off of.
#  config.vm.box = "centos64"

    config.vm.define :web do |web|
        web.vm.box = "centos64"
        web.vm.network :private_network, ip: "192.168.33.10"
    end

    config.vm.define :app do |app|
        app.vm.box = "centos64"
        app.vm.network :private_network, ip: "192.168.33.11"
    end

    config.vm.define :db do |db|
        db.vm.box = "centos64"
        db.vm.network :private_network, ip: "192.168.33.12"
    end

(省略)

end

vagrant upすると、web・app・dbの3台のVMが立ち上がる。便利だ。

$ vagrant up
Bringing machine 'web' up with 'virtualbox' provider...
Bringing machine 'app' up with 'virtualbox' provider...
Bringing machine 'db' up with 'virtualbox' provider...
(省略)

Vagrantfileで定義したVMを指定してvagrant sshすれば、指定したVMが立ち上がる。

$ vagrant ssh web
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ logout
Connection to 127.0.0.1 closed.

$ vagrant ssh db
Welcome to your Vagrant-built virtual machine.