Setelah membaca pertanyaan Anda lagi, Tampaknya Anda mencoba melakukan sesuatu yang sedikit berbeda dari saya - tetapi saya pikir tujuan akhir kami adalah sama.
Saya tidak ingin memanfaatkan layanan Cloud Vagrant untuk hosting kotak dasar saya, tetapi saya ingin dapat mendistribusikan lingkungan pengembangan ke tim pengembang saya, dan memanfaatkan fitur metadata.json
file untuk mempertahankan sistem versi untuk lingkungan pengembangan, yang kemudian akan tersedia untuk tim pengembangan saya hanya dengan menggunakan fasilitas yang dibangun menjadi gelandangan.
Dokumentasi gelandangan sangat jarang di daerah ini pada saat penulisan ini (8/5/2014), mungkin karena itu fitur yang relatif baru tetapi saya yakin fakta bahwa VagrantCloud memiliki tingkat pembayaran ada hubungannya dengan itu juga .
Untuk mengetahui cara memanfaatkan metadata.json
file ke versi dan mendistribusikan kotak, saya melihat beberapa VM yang tersedia di VagrantCloud. Setelah melihat semua itu, dan membaca beberapa kode gelandangan - menjadi sangat mudah untuk mengetahui bagaimana mencapai tujuan saya.
- Kemas kotak Anda seperti biasa. Dalam kasus saya, saya hanya mengemas untuk kotak virtual, karena itulah yang akan digunakan pengembang kami untuk menjalankan Vm. Saya juga mengemas Vagrantfile dengan basebox saya yang melakukan beberapa penyediaan untuk lingkungan pengembangan (menyiapkan saham ke folder yang sesuai, beberapa konfigurasi apache dasar, kesalahan logging, dll)
Buat metadata.json
file untuk menggambarkan kotak dasar Anda, milik saya terlihat mirip dengan ini:
{
"description": "long box description",
"short_description": "short box description",
"name": "company/developer-environment",
"versions": [{
"version": "1",
"status": "active",
"description_html": "<p>Dev Environment</p>",
"description_markdown": "Dev Environment",
"providers": [{
"name": "virtualbox",
"url": "http:\/\/vagrant.domain.local/dev/company-developer-environment-1.box"
}]
}]
}
Setelah saya membuat metadata.json
file saya , saya mengunggahnya ke server lokal yang berjalan di jaringan internal kami ( vagrant.domain.local/metadata.json
). Setelah saya melakukan itu, yang tersisa hanyalah mengujinya dengan gelandangan:
# add the box to vagrant using the definition from metadata.json
# (the box is actually downloaded here, so it can take a minute...or 10)
$ vagrant box add http://vagrant.domain.local/dev/metadata.json
# init the box (this creates a .vagrant folder and a Vagrantfile in the cwd with the appropriate box name)
$ vagrant init company/developer-environment
# boot the box
$ vagrant up
Voila, kotak pribadi yang di-host, dibagikan, dan versi jauh, yang tidak memerlukan penggunaan Cloud Awan.
Saat Anda membuat versi baru kotak Anda, Anda akan mengemasnya, dan mengedit metadata.json
file. Dari apa yang saya tahu, Anda dapat menggunakan skema versi apa pun yang Anda inginkan, baik versi semantik (1.0.0, 1.0.1, dll) atau hanya bilangan bulat sederhana untuk versi (1, 2, 3, dll). Ketika pengguna kotak Anda vagrant up
gelandangan secara otomatis memeriksa file metadata.json Anda untuk versi baru, dan akan meminta mereka vagrant box update
untuk memperbarui kotak itu.
Anda juga dapat melewati vagrant box add <metadata.json url>
and vagrant init
bits dengan mendefinisikan base Vagrantfile dengan nama kotak dan url kotak, seperti:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "company/developer-environment"
config.vm.box_url = "https://vagrant.domain.local/dev/metadata.json"
end
Anda bisa mendistribusikan Vagrantfile dengan konten-konten itu, dan semua pengguna hanya bisa melakukannya vagrant up
. Meskipun, saya tidak yakin tentang cara kerjanya ketika versi diperbarui.