LoginSignup
43
52

More than 5 years have passed since last update.

Vagrantで複数の仮想マシンを立ち上げる マルチマシン(Malti-Machine)設定

Last updated at Posted at 2015-09-16

一つのBOXから複数の仮想マシンを立ち上げる。

前回の投稿でAtomicHostのBaseBoxを作成したので、これを利用して3台の仮想マシンを起動します。

イメージとしては、Dockerでオーケストレーションを行う事を想定し、その準備という感じです。
(仮想マシンは3台立ち上げで、1台をKubernetesなどでコンテナホストを管理、2台がコンテナホストと言う構成)

準備

前回の最後の方で書きましたが、AtomicHostのBaseBoxをVagrantに登録します。

# vagrant box add AtomicHost atomichost-base.box
# vagrant init AtomicHost
# vagrant up

# vagrant init
でVagrantfileが生成されます。

一番シンプルな状態です。

Vagrantfile(シングル)

Vagrant.configure(2) do |config|
  config.vm.box = "AtomicHost"
end

マルチマシンのVagrantfile

このVagrantfileに対してマルチマシンの設定を記載していきます。
3台起動にすると下記のようになります。

Vagrantfile(マルチ)
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = "atomic-original"

  # 1台目管理マシン(マシン名:master)
  config.vm.define "master" do |atomic|
     atomic.vm.hostname = "master.atomichost"
     atomic.vm.synced_folder ".", "/vagrant", disabled: true
     atomic.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2222
     atomic.vm.network "private_network", ip: "192.168.33.10", virtualbox__intnet: "intra"
  end
  # 2台目 コンテナホスト(マシン名:node01)
  config.vm.define "node01" do |atomic|
     atomic.vm.hostname = "node01.atomichost"
     atomic.vm.synced_folder ".", "/vagrant", disabled: true
     atomic.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2223
     atomic.vm.network "private_network", ip: "192.168.33.101", virtualbox__intnet: "intra"
  end
  # 3台目 コンテナホスト(マシン名:node02)
  config.vm.define "node02" do |atomic|
     atomic.vm.hostname = "node02.atomichost"
     atomic.vm.synced_folder ".", "/vagrant", disabled: true
     atomic.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2224
     atomic.vm.network "private_network", ip: "192.168.33.102", virtualbox__intnet: "intra"
  end
end

※内部ネットワークの指定、複数起動時のSSHポートフォワーディングの指定がもれていたので修正しました。

上記で3台の仮想マシンを設定し、仮想マシン間のLANを設定しています。

起動

上記のVagrantfileのあるディレクトリで、以下を実行

# vagrant up

これで3台の仮想マシンが起動し、それぞれが通信可能な状態となりました。

各マシンへsshでログインする場合はパラメータにマシン名を指定します。

# vagrant ssh master

また、個別に立ち上げたい場合も同じくマシン名を指定します。

# vagrant up master

複数の仮想マシンを立ち上げる場合、ホストマシンのリソース、各仮想マシンの用途によって、メモリー、CPUの設定を個別に変えたいと思うことが多々あるかと思います。
その場合は、下記のように。

  # 2台目 コンテナホスト(マシン名:node01)
  config.vm.define "node01" do |atomic|
     atomic.vm.hostname = "node01.atomichost"
     atomic.vm.network "private_network", ip: "192.168.33.101"
     atomic.vm.provider "virtualbox" do |v| 
        v.customize ["modifyvm", :id, "--memory", 512] 
        v.name = "node01" 
    end
  end

各マシン設定の中でproviderとしてネストして設定します。


さて、こんな感じでAtomicHostを複数立ち上げる事が出来ましたので、次は複数ホストによるDockerのオーケストレーションの準備が出来てきた感じです。


参考
https://docs.vagrantup.com/v2/vagrantfile/

43
52
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
43
52