अपने प्रश्न को फिर से पढ़ने के बाद, ऐसा लगता है कि आप मुझसे कुछ अलग करने की कोशिश कर रहे हैं - लेकिन मुझे लगता है कि हमारा अंतिम लक्ष्य एक ही है।
मैं अपने बेस बॉक्स की मेजबानी के लिए वैग्रैंट क्लाउड सेवा का उपयोग नहीं करना चाहता, लेकिन मैं अपनी देव टीम को एक विकास वातावरण वितरित करने में सक्षम होना चाहता हूं, और metadata.json
विकास पर्यावरण के लिए एक वर्जनिंग सिस्टम बनाए रखने के लिए फ़ाइल की सुविधाओं का उपयोग करना चाहता हूं , जो तब मेरी विकास टीम को केवल योनि में निर्मित सुविधाओं का उपयोग करके उपलब्ध होगा।
इस लेख (8/5/2014) के समय में इस क्षेत्र में आवधिक दस्तावेज वास्तव में विरल है, क्योंकि संभवतः यह एक अपेक्षाकृत नई विशेषता है, लेकिन मुझे यकीन है कि वैग्रैंटक्लाउड का भुगतान किया गया टियर इसके साथ कुछ करना है। ।
metadata.json
फ़ाइल को संस्करण और वितरित करने के लिए फ़ाइल का उपयोग कैसे करें, यह जानने के लिए , मैंने VagrantCloud पर उपलब्ध कुछ VMs पर एक नज़र डाली। उन लोगों को देखने के बाद, और कुछ योनि कोड को पढ़ने के बाद - यह पता लगाना बहुत आसान हो गया कि मुझे अपना लक्ष्य कैसे पूरा करना है।
- अपने बॉक्स को वैसा ही पैकेज करें जैसा आप सामान्य रूप से देते हैं। मेरे मामले में, मैं केवल वर्चुअल बॉक्स के लिए पैकेजिंग कर रहा हूं, क्योंकि हमारे डेवलपर्स Vm को चलाने के लिए उपयोग कर रहे हैं। मैं अपने बेसबॉक्स के साथ एक वैग्रांटफाइल भी पैकेज करता हूं जो विकास के माहौल के लिए कुछ प्रावधान करता है (उचित फ़ोल्डर में शेयर सेट करना, कुछ बुनियादी अपाचे कॉन्फ़िगर करना, त्रुटि लॉगिंग, आदि)
metadata.json
अपने बेस बॉक्स का वर्णन करने के लिए एक फ़ाइल बनाएँ , मेरा यह जैसा दिखता है:
{
"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"
}]
}]
}
एक बार जब मैंने अपनी metadata.json
फ़ाइल बनाई , तो मैंने इसे हमारे आंतरिक नेटवर्क ( vagrant.domain.local/metadata.json
) पर चलने वाले स्थानीय सर्वर पर अपलोड कर दिया । एक बार जब मैंने ऐसा किया, तो जो कुछ बचा था, उसे योनि से जांचना था:
# 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
वोइला, एक दूरस्थ रूप से होस्ट किया गया, साझा और संस्करणित, निजी बॉक्स जिसे वैग्रैंट क्लाउड के उपयोग की आवश्यकता नहीं है।
जैसे ही आप अपने बॉक्स के नए संस्करण बनाते हैं, आप इसे पैकेज करेंगे, और metadata.json
फ़ाइल को संपादित करेंगे । जो मैं बता सकता हूं, उसमें से आप जो भी वर्जनिंग स्कीम चाहते हैं, उसका उपयोग सिमेंटिक वर्जनिंग (1.0.0, 1.0.1, आदि) कर सकते हैं या संस्करणों (1, 2, 3, आदि) के लिए बस पूरी सरल संख्या। जब आपका बॉक्स उपयोगकर्ता अपने vagrant up
आप ही नए संस्करण के लिए आपकी मेटाडेटा.जॉन फ़ाइल की जाँच कर लेता है, और उन्हें vagrant box update
बॉक्स को अपडेट करने के लिए संकेत देगा ।
तुम भी छोड़ सकते हैं vagrant box add <metadata.json url>
और vagrant init
बॉक्स नाम और बॉक्स यूआरएल के साथ एक आधार Vagrantfile को परिभाषित है, तो तरह से बिट्स:
# -*- 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
आप उन सामग्रियों के साथ एक Vagrantfile वितरित कर सकते हैं, और सभी उपयोगकर्ता बस करने में सक्षम होंगे vagrant up
। हालाँकि, मैं इस बारे में अनिश्चित हूं कि संस्करण अद्यतन होने पर कैसे काम करता है।