VagrantでCentOS7のホスト・ゲスト間とVM間ネットワークの設定

概要

  • vagrantで構築した複数のCentOS7の仮想マシンのホストオンリーアダプターと内部ネットワークの設定方法のまとめ.

背景

  • mac m1でPythonで作る対話システムを学んでいるとopenNMTが使えない場面が出たため,Windowsで行なうことにした.
  • 環境を作るところからだが,ただこれまでと同じように作っても面白くないと思い,ちゃんとやった事のないvagrantとdockerで環境を構築しようと考えた.
  • そこで一時的に対話システムを止めてDockerの本を読んで勉強し始めた.
  • が,思ったよりもvagrantでdockerの本用の環境を作成するのに時間がかかったのでまとめる.

Vagrantでの設定

  • 以下のようなVagrantfileを作成
  • 任意の文字列と任意のIPアドレスは重複しないように設定する
  • 任意の内部ネットワーク名は同じ文字列を設定にする
#-*- mode: ruby -*-
# vi: set ft=ruby :

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

  config.vm.define "任意の文字列" do |machine|
    # ホストオンリーアダプター
    machine.vm.network "private_network", ip: "任意のIPアドレス", auto_config:false
    # 内部ネットワーク
    machine.vm.network "private_network", ip: "任意のIPアドレス", virtualbox__intnet: "任意の内部ネットワーク名"
  end

  config.vm.define "任意の文字列" do |machine|
    # ホストオンリーアダプター
    machine.vm.network "private_network", ip: "任意のIPアドレス", auto_config:false
    # 内部ネットワーク
    machine.vm.network "private_network", ip: "任意のIPアドレス", virtualbox__intnet: "任意の内部ネットワーク名"
  end

end

CentOS7での設定

  • VMに vargrant ssh vm名 でログインして管理者権限で以下のコマンドを実行
# 上記のVagrantfileのように記述すればeth1がホストオンリーアダプター
# eth2が内部ネットワーク
nmcli device connection eth1
nmcli device connection eth2

# ログインしているVMのVagrant fileで設定したホストオンリーアダプターのIPアドレスを任意のIPアドレスと置換する
nmcli con mod eth1 ipv4.addresses "任意のIPアドレス/24"
# ログインしているVMのVagrant fileで設定した内部ネットワークのIPアドレスを任意のIPアドレスと置換する
nmcli con mod eth1 ipv4.addresses "任意のIPアドレス/24"

nmcli con mod eth1 ipv4.method "manual"
nmcli con mod eth2 ipv4.method "manual"

nmcli device disconnection eth1
nmcli device disconnection eth2

nmcli device connection eth1
nmcli device connection eth2
  • 設定後,pingをホストからVMに,VMからVMに打って疎通確認をして問題なければ完了