目次
事象
VirtualBpx + Vagrant な環境で、Vagrantfile に config.vm.box = "rockylinux/8"
と記述して Rocky Linux の仮想マシンを起動させようとすると、以下のようなエラーが出力されて起動しませんでした。
box.ovf というファイルが見つからない様子。
==> ansible: Importing base box 'rockylinux/8'...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["import", "-n", "\\\\?\\C:\\Users\\XXXXX\\.vagrant.d\\boxes\\rockylinux-VAGRANTSLASH-8\\7.0.0\\virtualbox\\box.ovf"]
Stderr: 0%...VBOX_E_OBJECT_NOT_FOUND
VBoxManage.exe: error: Appliance read failed
VBoxManage.exe: error: Failed to open OVF file '\\?\C:\Users\XXXXX\.vagrant.d\boxes\rockylinux-VAGRANTSLASH-8\7.0.0\virtualbox\box.ovf' (VERR_FILE_NOT_FOUND)
VBoxManage.exe: error: Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component ApplianceWrap, interface IAppliance
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleImportAppliance(struct HandlerArg *)" at line 510 of file VBoxManageAppliance.cp
Rocky Linux のフォーラムでも同じエラーが報告されていて、Vagrant Cloud からダウンロードできる Box ファイルに問題があるようです。
対応
Rocky Linux 公式の Box ファイルを使う
作業ディレクトリに以下の box-metadata.json
といった名前(ファイル名はなんでもOK)で Rocky Linux 公式 Box のカタログ情報を記載しておきます。
{
"name" : "rockylinux/8",
"description" : "Rocky Linux 8 7.0.0 Bugfix",
"versions" : [
{
"version" : "7.0.1-20221213.0",
"providers" : [
{
"name" : "virtualbox",
"url" : "http://dl.rockylinux.org/pub/rocky/8/images/x86_64/Rocky-8-Vagrant-Vbox-8.7-20221213.0.x86_64.box"
}
]
}
]
}
カタログファイルを作成したら、box add します。
$ vagrant box add box-metadata.json
==> box: Loading metadata for box 'box-metadata.json'
box: URL: file://C:/Vagrant/box-metadata.json
==> box: Adding box 'rockylinux/8' (v7.0.1-20221213.0) for provider: virtualbox
Vagrantfile に UEFI の設定を追加する
Rocky Linux 公式の Box は UEFI が有効になっているので、Vagrantfile に UEFI の設定を追加します。
最小限の設定は、以下のようになります。
Vagrant.configure("2") do |config|
config.vm.box = "rockylinux/8"
config.vm.provider "virtualbox" do |domain|
domain.customize ["modifyvm", :id, "--firmware", "efi"]
end
end
Vagrant up
上記の2つの対処を行ったら vagrant up
しましょう。
vagrant up
Bringing machine 'ansible' up with 'virtualbox' provider...
==> ansible: Importing base box 'rockylinux/8'...
==> ansible: Matching MAC address for NAT networking...
==> ansible: Checking if box 'rockylinux/8' version '7.0.1-20221213.0' is up to date...
==> ansible: Setting the name of the VM: vagrant_ansible_1676276361763_59207
(省略)
仮想マシンが起動したら、OS のバージョンを確認しておきましょう。
$ vagrant ssh -- "sudo cat /etc/rocky-release"
Rocky Linux release 8.7 (Green Obsidian)
いい感じですね。
まとめ
VirtualBox + Vagrant 環境で Rocky Linux の仮想マシンを作ろうとすると、Vagrant Cloud にある Box ファイルの問題でうまくいきません。
Rocky Linux 公式の Box ファイルなら問題ありませんが、これはまあまあ不便だなーと思いました。
Vagrant Cloud の Box ファイルがいつ更新されるのか分かりませんが、早く改善するといいなと思います。