18

私はいくつかのかなり標準的なパッケージ(PHP/MySQL/Apache)をインストールし、いくつかの特定のポート転送を行うlucid32ボックス用の特定のVagrantfileを持っています。それをセットアップし、gitからプロジェクトをチェックアウトし、いくつかのサーバー構成を変更します。チームの他の開発者が使用できるようにこのボックスをパッケージ化するには、次のコマンドを使用します。

vagrant package boxname --output test.box --vagrantfile Vagrantfile

test.box ファイルを取得し、パッケージに特定の Vagrantfile を追加していることを示してから、次を実行します。

vagrant box add boxname test.box

vagrant box listいくつかのテストディレクトリを作成し、vagrant init boxname続いてvagrant up 、チェックアウトとすべてからのファイルでそのボックスをプロビジョニングすると、問題なく表示されますが、適切なポート転送をセットアップせず実際には Vagrantfile を使用していませんまったくパッケージ化しましたが、そのディレクトリに新しいデフォルトのものを生成しました。

~/.vagrant.d/boxes/boxname に、デフォルトの Vagrantfile と、includes/_Vagrantfile にパッケージ化したものがあることに気付きました

特定の Vagrantfile を生成したときに生成されるようにする方法はありますvagrant init boxnameか?

4

2 に答える 2

23

これは実際にはすべて意図したとおりに機能しています。Vagrant はロード時に複数の Vagrantfiles (からのものだけでなくvagrant init) をロードし、ボックスにパッケージ化された Vagrantfile はそれらの 1 つです。詳細については、https ://www.vagrantup.com/docs/vagrantfile/#load-order-and-merging の「Vagrantfile Load Order」を参照してください。

簡単に言うと、Vagrant は複数の Vagrantfile を特定の順序でロードし、それらの構成をマージします。ボックスの Vagrantfile は、このプロセスの一部として、ルート Vagrantfile (からのものvagrant init) の前にロードされます。

で生成されたスケルトン Vagrantfile を作成する方法は現在ありませんvagrant init

ポート転送など、パッケージ化された Vagrantfile に配置した構成は、構成をマージするときにすべてのポート転送を追加するだけなので、適切に読み込まれている必要があります。

これが起こらない場合は、バグを報告する必要があります。しかし、SOの答えのために、これが物事の振る舞い方です。

于 2013-02-25T22:06:06.683 に答える
0

このコードは私のために働いた

vagrant package --output vagrant_example.box
于 2016-08-24T10:26:14.263 に答える