何が起こったか
久々にローカルのVMインスタンスを作ろうとしたら、これまで使えていたBoxが軒並みcould not be foundに……
これまでBoxを提供していたVagrant Atlasサービスは、Vagrant Cloudというものに移行する(した)ようです。
Vagrant Cloud Migration Announcement
https://www.hashicorp.com/blog/vagrant-cloud-migration-announcement
updateを利用者に通知できるようになったり、いろいろと機能強化がなされたようです。
必要なBoxは下記URLから検索できるようになったようです。
https://app.vagrantup.com/boxes/search
なお、以降の動作確認はVagrant 1.9.1で行いました。
$ vagrant --version
Vagrant 1.9.1
エラーの具体例
下記のようなエラーが出力される場合は、既にAtlas上にBoxイメージが無い可能性が高いです。
「以前はこの設定で出来たんだけどな…」という場合はほぼこれです。
エラーメッセージ
$ vagrant up
Bringing machine 'stdsv1' up with 'virtualbox' provider...
==> stdsv1: Box 'centos/7' could not be found. Attempting to find and install...
stdsv1: Box Provider: virtualbox
stdsv1: Box Version: 1803.01
The box 'centos/7' could not be found or
could not be accessed in the remote catalog. If this is a private
box on HashiCorp's Atlas, please verify you're logged in via
`vagrant login`. Also, please double-check the name. The expanded
URL and error message are shown below:
URL: ["https://atlas.hashicorp.com/centos/7"]
Error: The requested URL returned error: 404 Not Found
Vagrantfile(修正前)
下記のVagrantファイルを元にvagrant upを行うと、上記エラーが出ます。
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "centos/7"
config.vm.box_version = "1803.01"
config.vm.boot_timeout = 600
config.vm.provision :shell, :path => "bootstrap.sh"
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 1
end
config.vm.network "forwarded_port", guest:22, host:2322
config.vm.define :stdsv1 do |c1|
c1.vm.hostname = "stdsv1"
c1.vm.network :private_network, ip: "192.168.255.11"
end
end
Vagrantfile(修正後)
「config.vm.box_url」を指定することで、Vagrant Cloud上のファイルを取得することができるようになります。
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "centos/7"
config.vm.box_url = "https://app.vagrantup.com/centos/boxes/7" # ←この行を追加
config.vm.box_version = "1803.01"
config.vm.boot_timeout = 600
config.vm.provision :shell, :path => "bootstrap.sh"
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 1
end
config.vm.network "forwarded_port", guest:22, host:2322
config.vm.define :stdsv1 do |c1|
c1.vm.hostname = "stdsv1"
c1.vm.network :private_network, ip: "192.168.255.11"
end
end