質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

1回答

887閲覧

vagrantfileの設定のポートフォワーディングについて

s15ak071

総合スコア13

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2020/01/20 10:05

#Vagrantfileの設定

Vagrantfile

1 #web server 2 config.vm.define "web" do |web| 3 config.vm.box = "bento/centos-7.1" 4 web.vm.network "private_network", ip: "192.168.33.10" 5 end 6 7 #api server 8 config.vm.define "api" do |api| 9 config.vm.box = "bento/centos-7.7" 10 api.vm.network "private_network", ip: "192.168.33.20" 11 end

フロントエンドエンジニアでこの手のvagrantの知識が皆無です。。。
見よう見まねでマルチマシンの設定をしてみました。※上記参照

###やりたいこと
vm.defineでローカル環境のマルチマシン設定を行って、CentOS7.1環境のwebサーバとCentOS7.7環境のapiサーバを
通信しようと考えているのですがポートフォワーディングの設定についてイマイチ理解していなくて
困っています。

###質問
そもそもconfig.vm.network :forwarded_port, guest: 8000, host: 8000のような設定は必要なのか困ってます。

用途としては、apiサーバとwebサーバの環境間のvm同士の通信さえできてwebサーバ側からapiサーバのapiを叩ければOKです。
forwarded_portの指定が必要あるのか教えて詳しい人!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

(ProviderがVirtualBoxだっていう前提に立ってお話します)
Vagrantというか、VirtualBoxの仕様上、portfowardの設定は、NATネットワーク(つまりデフォルト)にしか有効じゃありません。
これは、外部ないしはホストマシンから、VMに接続する場合に使います。
VM同士を接続するのには、使えません。使えないというか、多分やるならnetshとかでさらにポート転送してやんないといけない。試したことないけど。

このprivate_networkの仕様に関しては、こことかここが比較的わかりやすいです。
が、ざっくりいうと、単にprivate_networkだけを設定すると、ホストオンリーアダプターが作成されてしまい、結局ホストとしか通信できません。
予め、VirtualBoxの環境設定から、"hogefugaNet"を作成しておいて、private_networkの接続先にこいつを指定してやる。virtualbox__intnet: "hogefugaNet"
すると、そのNetworkに接続に行きます。例えばこんな感じ。

Vagrantfile

1 config.vm.box = "template" 2 config.vm.define :a do |a| 3 a.vm.network :private_network, ip: "192.168.33.20", virtualbox__intnet: "hogefugaNet" 4 end 5 6 config.vm.define :b do |b| 7 b.vm.network :private_network, ip: "192.168.33.21", virtualbox__intnet: "hogefugaNet" 8 b.vm.network "forwarded_port", guest: 60443, host: 8443 9 end

ちな、.network行の分だけNICが作成されるので、その点については注意。
どっちにせよ、VirtualBoxのNetoworkについて、ある程度理解してることが必要。

投稿2020/01/21 01:03

編集2020/01/21 01:04
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s15ak071

2020/01/21 01:16

めっちゃ助かりました、無知な私に丁寧に説明ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問