1つのVagrantfileで複数の仮想マシンを立ち上げ

Tag:

Vagrantfileに複数の仮想マシンを定義することで、複数の仮想マシンを立ち上げることができます。ここでは、複数の仮想マシンの立ち上げ、通信確認を行います。

複数の仮想マシンを立ち上げ

2つ仮想マシン(masterホスト、webホスト)を立ち上げてみます。

Vagrantfileに次のように記述します。

Vagrant.configure(2) do |config|
  config.vm.box = "bento/centos-7.1"

  config.vm.define :master do |server|
    server.vm.hostname = "master"
    server.vm.network "private_network", ip: "192.168.33.10"
  end

  config.vm.define :web do |server|
    server.vm.hostname = "web"
    server.vm.network "private_network", ip: "192.168.33.11"
  end
end

6,11行目でプライベートネットワークを設定してます。プライベートネットワークは、ホストとゲスト間のみで有効なネットワークとなります。

※ホストオンリーアダプタ
ホストとゲストで有効なネットワーク。ゲスト同士は通信できない。

※プライベートネットワーク
ホストとゲスト間で有効なネットワーク。ゲスト同士でも通信できる。

「vagrant up」で2つ仮想マシンが立ち上がります。
vagrant_multi0

ホストとゲストのIPは以下のようになります。
vagrant_multi_p
ホストのIPは、割り当てたIPアドレスのホスト部が「1」のアドレスです。

以降、通信確認をしていきます。

ホストマシン ⇒ ゲストマシン(ping)

ホストマシンからゲストマシンに対してpingを飛ばしてみます。
vagrant_multi_p1

masterホストにping送信
vagrant_multi1

webホストにping送信
vagrant_multi2

ホストマシン ⇒ ゲストマシン(ssh)

ホストマシンからゲストマシンにSSH接続します。
vagrant_multi_p2

複数の仮想マシンを立ち上げた場合、下記のように対象ホストを指定します。

vagrant ssh 対象ホスト

なので、masterホストに接続するには「vagrant ssh master」とします。

ゲストマシン ⇒ ゲストマシン(ping)

ゲストマシン同士でネットワークが繋がるか確認します。
vagrant_multi_p3

masterホストにSSH接続後、webホストにpingを送信しています。
vagrant_multi3

ゲストマシン ⇒ ゲストマシン(ssh)

masterホストからwebホストに対して、SSH接続してみます。
vagrant_multi_p5

1. masterホストにログイン

vagrant ssh master

2. 「~/.ssh/config」ファイルを編集

webホストに接続する際、IPアドレスでなく、ホスト名でアクセスできるように「~/.ssh/config」ファイルを編集します。

vi .ssh/config

「~/.ssh/config」ファイルの内容は以下の通りです。

Host web
 HostName 192.168.33.11

「~/.ssh/config」ファイルのパーミッションを変更します。

chmod 600 .ssh/config

3. 秘密鍵と公開鍵のペアを作成

下記コマンドで秘密鍵と公開鍵のペアを作成します。

ssh-keygen -t rsa

vagrant_multi4
試験用のため、入力を求められる箇所は全てEnterとしました。

下記のように、秘密鍵(~/.ssh/id_rsa)と公開鍵(~/.ssh/id_rsa.pub)が生成されました。
vagrant_multi5

4. webホスト側へ公開鍵を登録

下記コマンドを実行すると、masterホストの公開鍵(~/.ssh/id_rsa.pub)がwebホストの「/home/vagrant/.ssh/authorized_keys」に登録されます。

ssh-copy-id web

vagrant_multi6
パスワードの入力が求められる箇所は「vagrant」と入力します。

登録する公開鍵は、デフォルトで「~/.ssh/id_rsa.pub」となります。変更したい場合、オプションで「-i 公開鍵のパス」と指定します。

5. SSH接続

masterホストからwebホストへSSH接続します。
vagrant_multi7

スポンサーリンク