一つの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が生成されます。
一番シンプルな状態です。
Vagrant.configure(2) do |config|
config.vm.box = "AtomicHost"
end
マルチマシンのVagrantfile
このVagrantfileに対してマルチマシンの設定を記載していきます。
3台起動にすると下記のようになります。
# -*- 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のオーケストレーションの準備が出来てきた感じです。