UbuntuのLTSにはコードネームがある。
-
Vagrantfileの作成
vagrant init ubuntu/bionic64
ubuntu/bionic64 (Ubuntu 18.04 LTS)
ubuntu/focal64 (Ubuntu 20.04 LTS)
ubuntu/jammy64 (Ubuntu 22.04 LTS) -
Vagrantfileの確認
例
# Vagrant構成ファイルバージョン2
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.network "private_network", type: "dhcp"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end
end
- 仮想マシンを起動
vagrant up
- 接続
vagrant ssh
- 停止
vagrant halt
- 削除
vagrant destroy
コードネーム対応表
Ubuntuバージョン: コードネーム
20: ubuntu/bionic64
22: ubuntu/focal64
24: ubuntu/jammy64
config.vm.network
-
フォワードネットワーク
config.vm.network "forwarded_port", guest: 80, host: 8080
Host側にNATを作り、ポートを対応させる
ホストマシンからゲストマシン上の特定ポートへアクセス。開発環境向け -
プライベートネットワーク
config.vm.network "private_network", ip: "192.168.33.10"
Hostにvethを立てて、VMと接続する。IPアドレスを利用して通信するが、ルーターはない。インターフェースをの間にスイッチをおいて、同一リンクにする。
ホストマシンとゲストマシン間の通信専用。DHCPまたは静的IPが必要。
また、外部へのアクセスにおいては、VirtualBoxが管理するルーター(筆者の環境だと10.0.2.0/24)があり、VMはインターフェースとして、外部アクセス用ももつ。
オプション:
ip: "192.168.33.10"
type: "dhcp"
ipとtypeはどちらかのみを設定するものなのだと思う。
- パブリックネットワーク
config.vm.network "public_network"
ホストマシン と ゲストマシン は物理ネットワーク(LAN)を共有
外部ネットワークから直接VMへアクセス可能。注意が必要
オプション:
bridge: "ホストのインターフェース名"
ホストのインターフェース名を指定すると、そのインターフェースとスイッチで繋ぐイメージ。
ip aコマンドの出力
lladdr: Link-Layer Address。MACアドレスのこと。
dev: Device。NICのこと。
scope: IPアドレスのスコープ。global=global接続に利用できるアドレス、link=リンク通信のみに利用できるアドレス、host=そのマシンでのみ利用できるアドレス(localhostアドレス)。