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

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

Vagrant 1.3.1 にした

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

すると vagrant up や vagrant 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回インストールしちゃったよ。

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