わすれっぽいきみえ

みらいのじぶんにやさしくしてやる

6日目: Laravel Homesteadのバージョンを上げる

homesteadを立ち上げようとしたら

vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'laravel/homestead' is up to date...
==> default: A newer version of the box 'laravel/homestead' is available! You currently
==> default: have version '0.5.0'. The latest is version '0.6.0'. Run
==> default: `vagrant box update` to update.
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

vagrant box update でboxをupdateできるという。
これまでこの操作をやったことがなかったので、一応やっておいた。

vagrant box update
==> default: Checking for updates to 'laravel/homestead'
    default: Latest installed version: 0.5.0
    default: Version constraints: >= 0.4.0
    default: Provider: virtualbox
==> default: Updating 'laravel/homestead' with provider 'virtualbox' from version
==> default: '0.5.0' to '0.6.0'...
==> default: Loading metadata for box 'https://atlas.hashicorp.com/laravel/homestead?access_token=xAEs4w-5RNdDxys9mXUbknA9wpTvqgYSWuSmp6kLxEqystNw1TCnzkfsxnMsA-E4sZE'
==> default: Adding box 'laravel/homestead' (v0.6.0) for provider: virtualbox
    default: Downloading: https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.6.0/providers/virtualbox.box
==> default: Box download is resuming from prior download progress
==> default: Successfully added box 'laravel/homestead' (v0.6.0) for 'virtualbox'!

vagrant box list
laravel/homestead (virtualbox, 0.5.0)
laravel/homestead (virtualbox, 0.6.0) // 増えてる

このまま vagrant up を実行すると

vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'laravel/homestead' is up to date...
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

おー立ち上がったっぽい。

でも昔 vagrantで複数インスタンスを立ち上げてみた ときには自分でどのboxを利用するか明示的に指定した。今回は何もしなくてもboxが切り替わるようなので、この仕組みがどうなっているのか調べてみる。

3日目の記事でVagrantfileを自動生成した。この自動生成ファイルの中身を見ると vendor/laravel/homestead/scripts/homestead.rb が設定ファイルとあるので、このファイルを読んでみる。

    # Configure The Box
    config.vm.box = settings["box"] ||= "laravel/homestead"
    config.vm.box_version = settings["version"] ||= ">= 0.4.0"
    config.vm.hostname = settings["hostname"] ||= "homestead"

このファイルにあるようにsettingsに明示的に "box""version""hostname"を指定しない場合、それぞれ "laravel/homestead"">=0.4.0""homestead" が利用される。settingsとして読み込まれるのは laravelのインストールディレクトリ直下にある Homestead.yaml でデフォルトだと "box""version" の指定がない。このため単に vagrant up を実行すると "laravel/homestead" boxの最新バージョンが利用される。

なので例えばhomesteadのバージョンが0.6.0に上がってるんだが、0.5.0のままで利用したいという場合は Homestead.yamlに次の行を足せば良い。

version: 0.5.0

この状態で vagrant reload もしくは vagrant up を実行する。

私は特にhomesteadのバージョンにこだわりがないので、version指定しなくて良いなーと思った。

www.vagrantup.com

1.5の時点で導入されてたらしいが全然確認してなかった。

今日はここまで。