本日(2016-07-12、vagrant 1.8.4)で、手動で(つまり、ボックスを手動で更新し、metadata.jsonファイルを編集して)独自のカタログを実行したいが、それでも動作させる場合実際のカタログのように、次のことに注意してください。
ファイルに「metadata.json」という名前を付ける必要はありません。期待される値が含まれている限り、任意の名前を付けることができます。ここで「metadata.json」を使用して、以下の手順を明確にします。
各metadata.jsonファイルには、1つのボックスのみを含めることができます。複数のバージョンを持つことができ、各バージョンは複数のプロバイダー(virtualbox、vmware、libvirt)を持つことができます。複数のボックス(「fedora」と「ubuntu」など)が必要な場合は、2つの異なるメタデータファイルが必要です。
Vagrantは、metadata.jsonファイルのタイプが「application / json」(上記のNicholas Hindsのようになります。Webサーバーがそれを返さない(または「text / plain」を返す)場合、vagrantはそれが実際のボックスファイルであると想定します、それを解析してみてください(そして惨めに失敗します)。
HashicorpのAtlas(Vagrant Cloudだったもの)はこの例外です。リダイレクトによって「text / html」として提供されるコンテンツに導かれるからです。これについての私の最良の推測は、リダイレクトと関係があることです(これについては以下で詳しく説明します)。
ボックスファイルは、メタデータファイルと同じ場所にある必要はありません。メタデータファイルをローカルウェブサーバーに配置し、Amazon S3にボックスを配置しても問題ありません。
だから、私が得た限りでは、これをウェブサーバー上で動作させ、それでもかなり正常な機能を維持する最も簡単な方法を見つけました:
ウェブホストで、次のようなファイルとディレクトリ構造を作成します。
d wwwroot/
d wwwroot/boxes
d wwwroot/boxes/yourname
f wwwroot/boxes/yourname/.htaccess
d wwwroot/boxes/yourname/box1
f wwwroot/boxes/yourname/box1/metadata.json
f wwwroot/boxes/yourname/box1/box1-$version1-$provider.box
f wwwroot/boxes/yourname/box1/box1-$version2-$provider.box
f wwwroot/boxes/yourname/box1/box1-$version2-$otherprovider.box
d wwwroot/boxes/yourname/box2
f wwwroot/boxes/yourname/box2/metadata.json
f wwwroot/boxes/yourname/box2/box2-$version1-$provider.box
(... etc)
(このレイアウトは、box1の「metadata.json」が「http:// yourhost / boxes / yourname / box1 / box1- $ version1- $ provider.box」のようなものを指すURLを持つ必要があることを意味します)
.htaccessで、ディレクトリインデックスに「metadata.json」が設定されていることを確認します。ネガティブキャッシュと実際のコンテンツの非表示のために、残りはオプションです。
Header unset Pragma
FileETag None
Header unset ETag
DirectoryIndex metadata.json
IndexIgnore *
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate, private"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
ご使用の環境で、Webホストを指すVAGRANT_SERVER_URLをエクスポートします。末尾のスラッシュに注意してください!
export VAGRANT_SERVER_URL="http://yourhost/boxes"
これを配置すると(および正しい内容のすべてのファイル)、ボックスを直接追加できます:
vagrant box add yourname/box1
"metadata.json"はbox1ディレクトリのインデックスファイルであるため、コンテンツを直接リダイレクトする必要があり、vagrantはそれを取得し、メタデータを解釈して適切なボックスをダウンロードします。