【Vagrant】VMホスト名の扱いについて
前回Vagrant上で管理されているVM名とVagrantfileが格納されているフォルダ名が別であることに気づかずにスナップショット作成に失敗した事例を紹介しました。
今回はVagrantを使う上でのVMのホスト名関連についてまとめたいと思います。
私が調べた限り、Vagrantfile上では下記3種類のホスト名を定義する箇所がありました。
- Vagrant上で管理されるホスト名
- Virtualbox上で管理されるホスト名
- OS上のホスト名(通常の名前解決で使われるもの)
Vagrant上で管理されるホスト名
vagrant up や vagrant status など主にvagrantコマンドで対象VMを操作する際に利用されます。前回のスナップショット作成の際にも必要でした。
Vagrantfile上で下記のように定義します。
config.vm.define 'VM名' do |host|
・
・
end
Virtualbox上で管理されるホスト名
下記画像のようにVirtualboxのGUI上に表示されるホスト名です。
Vagrantfile上で下記のように定義します。
host.vm.provider "virtualbox" do |vb|
vb.name = "VM名"
end
OS上のホスト名(通常の名前解決で使われるもの)
TeraTermを利用したSSH接続の際などに使用する通常のホスト名です。
Vagrantのプラグイン vagrant-hostmanager を使うことでホストOS内、ゲストOS内で名前解決ができます。
Vagrantfile上で下記のように定義します。
config.vm.hostname = "ctest7"
Vagrantfileの記載例
部分部分だと分かりづらいので、例として私が作成したVagrantfileを公開します。
これをご参考にいろいろカスタマイズしてください。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.hostmanager.enabled = true
config.hostmanager.manage_host = true
config.vm.define 'ctest7' do |host|
host.vm.hostname = "ctest7"
host.vm.box = "centos/7"
host.vm.network "private_network", ip: "192.168.33.11"
host.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.name = "ctest7"
end
end
end
※尚、5行目、6行目のvagrant-hostmanagerの定義箇所を「config.vm.define 'ctest7’ do |host|」内に記述すると何故かホストOS上のhostsファイルへの書き込み処理が走りませんでした。