Vagrant 1.3.0 からは2回目以降の起動時にプロビジョニングが自動で走らないので注意

2回目から自動で走らないというか、
デフォルトでは初回のみ走るというか。

Vagrant 1.3.1 にした

しばらく Vagrant のバージョン 1.2.7 を使ってたんだけど
1.3.1 が出てたので手元の環境もアップデートしてみました。

すると vagrant upvagrant reload したときの挙動が違う。

なぜかプロビジョニングが走りません。
Chef やらシェルスクリプトやら Puppet やらを使って
環境を設定してくれるやつね。

仕様が変わってた

これはどうしたことかと思って Changelog を見たら
プロビジョニングに関する仕様が変わってました。

vagrant/CHANGELOG.md at master · mitchellh/vagrant

1.3.0 (September 5, 2013)

  • vagrant up will now only run provisioning by default the first time it is run. Subsequent reload or up will need to explicitly specify the --provision flag to provision.

1.3.0 からは、初回の up のときのみ
デフォルトでプロビジョニングが走るようになったとのこと。
これまでは毎回走ってました。

確かに、いったん設定ができてしまえば
Vagrant を起動させる度にプロビジョニングを行う必要はないので
この方が理にかなってるような気がします。

これまでは、必要なければ --no-provision で飛ばせてたんだけど
今後は逆に、2回目以降は必要なときだけオプションで指示する格好。

こんな具合ですね。

vagrant up --provision
vagrant reload --provision

ファイルが増えてる

初回のみ自動実行という処理のために、
.vagrant ディレクトリ内のファイルが増えてます。

1.2.7 まで

% tree .vagrant
.vagrant
└── machines
    └── default
        └── virtualbox
            └── id

3 directories, 1 file

1.3.0から

% tree .vagrant
.vagrant
└── machines
    └── default
        └── virtualbox
            ├── action_provision
            ├── action_set_name
            └── id

3 directories, 3 files

Git なんかで管理するとき
ふつうは .vagrant ディレクトリごと ignore してると思うから
気にする必要ないと思うんだけど、
もし何か理由があって id ファイルだけを対象にしてるような場合
ここに新しいファイルが入っちゃうので注意。

というわけで

挙動が違うのは不具合ではないので
焦って 1.2.7 に戻す必要はないと思います。

  • Vagrant 未インストールの Mac に 1.3.1 を入れる
  • 何か変だと思って 1.2.7 に戻す
  • 変じゃなかったことに気づいて 1.3.1 に入れ直す

今日3回インストールしちゃったよ。

  • このエントリーをはてなブックマークに追加