Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

一つの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/

zum
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした