ちょっと前、久しぶりにVagrant + VirtualboxをMac(Apple Silicon)で利用しようとしたところ、そもそもVirtualboxがApple Siliconで動かなくなったりしてて困っていたのですが、最近ふと「VitualboxがApple Siliconに対応した!」という記事を見つけたので(とはいえ対応したのは2025年の1月なので少し前ですが。7.1.xから)、もしやVagrantも対応したかなと思って試してみました。
結論
とりあえず動きました。
Vagrantfile
動作確認だけなので、Claude先生にVagrantfileを生成してもらいました。
Claude先生も最初「VirtualboxはApple Siliconに対応してない!」と言っていたのですが、URLを貼り付けて教えるとコードを書いてくれました。
以下の内容でとりあえず動きました。私の用途に合わせ、
- Ubuntu Server 24.x
- ネットワークはブリッジ
となっています。
Vagrant.configure("2") do |config|
# Ubuntu Server 24.04 LTS (ARM64版) - Apple Silicon対応
config.vm.box = "net9/ubuntu-24.04-arm64"
config.vm.box_version = "1.1"
# VirtualBoxプロバイダーの設定(Apple Silicon対応)
config.vm.provider "virtualbox" do |vb|
# メモリ設定(2GB)
vb.memory = "2048"
# CPU設定(2コア)
vb.cpus = 2
# GUI無効化(サーバー用途)
vb.gui = false
# 仮想マシン名
vb.name = "ubuntu-server-24.04-arm64"
# Apple Silicon対応の設定
vb.customize ["modifyvm", :id, "--firmware", "efi"]
vb.customize ["modifyvm", :id, "--chipset", "ich9"]
end
# ネットワーク設定
# ブリッジネットワーク(物理ネットワークに直接接続)
# Wi-Fi接続の場合(最も一般的)
config.vm.network "public_network", bridge: "en0"
# 有線LAN接続の場合は以下をコメントアウト
# config.vm.network "public_network", bridge: "en1"
# または、複数のインターフェースを指定して自動選択
# config.vm.network "public_network", bridge: ["en0", "en1"]
# ポートフォワーディング(SSH)- ブリッジでも念のため設定
config.vm.network "forwarded_port", guest: 22, host: 2222, host_ip: "127.0.0.1", id: "ssh"
# SSH設定の最適化
config.ssh.forward_agent = true
config.ssh.insert_key = false
config.ssh.shell = "bash -l"
# 共有フォルダ設定
# 基本設定:Vagrantfileがあるディレクトリ → /vagrant
config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
# 追加の共有フォルダ例(必要に応じてコメントアウト)
# config.vm.synced_folder "~/Documents", "/home/vagrant/documents", type: "virtualbox"
# config.vm.synced_folder "~/Desktop", "/home/vagrant/desktop", type: "virtualbox"
# config.vm.synced_folder "./shared", "/shared", type: "virtualbox"
# プロビジョニング(段階的に実行)
# 段階1: 基本更新
config.vm.provision "shell", name: "basic-update", inline: <<-SHELL
echo "=== Step 1: Basic System Update ==="
export DEBIAN_FRONTEND=noninteractive
# パッケージリストの更新
apt update
# 必要最小限のパッケージのみインストール
apt install -y curl wget
echo "Basic update completed"
SHELL
# 段階2: SSH設定の最適化
config.vm.provision "shell", name: "ssh-config", inline: <<-SHELL
echo "=== Step 2: SSH Configuration ==="
# SSH設定の最適化
cat >> /etc/ssh/sshd_config <<EOF
# Vagrant optimizations
UseDNS no
GSSAPIAuthentication no
EOF
# SSHサービスの再起動
systemctl restart sshd
echo "SSH configuration completed"
SHELL
# 段階3: 追加パッケージとシステム設定
config.vm.provision "shell", name: "additional-setup", inline: <<-SHELL
echo "=== Step 3: Additional Setup ==="
export DEBIAN_FRONTEND=noninteractive
# システム全体のアップグレード(非対話式)
apt upgrade -y
# 基本的なパッケージのインストール
apt install -y git vim htop tree build-essential
# タイムゾーンの設定
timedatectl set-timezone Asia/Tokyo
# ネットワーク情報の表示
echo "=== Network Configuration ==="
ip addr show
echo ""
# システム情報の表示
echo "=== Ubuntu Server 24.04 LTS Setup Completed ==="
lsb_release -a
uname -a
echo "================================================"
SHELL
end
Windowsでも利用でき、一般的な仮想化ソフトが利用したかったので対応してくれて感謝です。