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つ仮想マシンが立ち上がります。
ホストとゲストのIPは以下のようになります。
ホストのIPは、割り当てたIPアドレスのホスト部が「1」のアドレスです。
以降、通信確認をしていきます。
ホストマシン ⇒ ゲストマシン(ping)
ホストマシンからゲストマシンに対してpingを飛ばしてみます。
masterホストにping送信
webホストにping送信
ホストマシン ⇒ ゲストマシン(ssh)
ホストマシンからゲストマシンにSSH接続します。
複数の仮想マシンを立ち上げた場合、下記のように対象ホストを指定します。
vagrant ssh 対象ホスト
なので、masterホストに接続するには vagrant ssh master
とします。
ゲストマシン ⇒ ゲストマシン(ping)
ゲストマシン同士でネットワークが繋がるか確認します。
masterホストにSSH接続後、webホストにpingを送信しています。
ゲストマシン ⇒ ゲストマシン(ssh)
masterホストからwebホストに対して、SSH接続してみます。
masterホストにログイン
vagrant ssh master
「~/.ssh/config」ファイルを編集
webホストに接続する際、IPアドレスでなく、ホスト名でアクセスできるように「~/.ssh/config」ファイルを編集します。
vi .ssh/config
「~/.ssh/config」ファイルの内容は以下の通りです。
Host web
HostName 192.168.33.11
「~/.ssh/config」ファイルのパーミッションを変更します。
chmod 600 .ssh/config
秘密鍵と公開鍵のペアを作成
下記コマンドで秘密鍵と公開鍵のペアを作成します。
ssh-keygen -t rsa
試験用のため、入力を求められる箇所は全てEnterとしました。
下記のように、秘密鍵( ~/.ssh/id_rsa
)と公開鍵( ~/.ssh/id_rsa.pub
)が生成されました。
webホスト側へ公開鍵を登録
下記コマンドを実行すると、masterホストの公開鍵(~/.ssh/id_rsa.pub)がwebホストの「/home/vagrant/.ssh/authorized_keys」に登録されます。
ssh-copy-id web
パスワードの入力が求められる箇所は vagrant
と入力します。
SSH接続
masterホストからwebホストへSSH接続します。