आवारा बॉक्स लॉन्च करते समय 'डिफ़ॉल्ट' नाम कहां से आता है?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
क्या इसे सेट करने का कोई तरीका है?
आवारा बॉक्स लॉन्च करते समय 'डिफ़ॉल्ट' नाम कहां से आता है?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
क्या इसे सेट करने का कोई तरीका है?
जवाबों:
मुझे कई विकल्प भ्रामक लगे, इसलिए मैंने उन सभी का परीक्षण करने का निर्णय लिया कि वे क्या करते हैं।
मैं VirtualBox 4.2.16-r86992 और Vagrant 1.3.3 का उपयोग कर रहा हूं।
मैंने एक निर्देशिका बनाई nametest
और बुलाया
vagrant init precise64 http://files.vagrantup.com/precise64.box
एक डिफ़ॉल्ट Vagrantfile उत्पन्न करने के लिए। फिर मैंने वर्चुअलबॉक्स जीयूआई खोला ताकि मैं देख सकूं कि मेरे द्वारा बनाए गए बॉक्स किस नाम से दिखाई देंगे।
डिफ़ॉल्ट Vagrantfile
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
end
वर्चुअलबॉक्स GUI नाम: "nametest_default_1386347922"
टिप्पणियाँ: नाम DIRECTORY_default_TIMESTAMP प्रारूप में चूक करता है।
वीएम को परिभाषित करें
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "foohost"
end
वर्चुअलबॉक्स GUI नाम: "nametest_foohost_1386347922"
टिप्पणियाँ: यदि आप स्पष्ट रूप से एक वीएम को परिभाषित करते हैं, तो उपयोग किया गया नाम टोकन 'डिफ़ॉल्ट' की जगह लेता है। यह कंसोल पर नाम योनि आउटपुट है। सरल zook
(टिप्पणीकार) इनपुट पर आधारित है
प्रदाता का नाम सेट करें
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.provider :virtualbox do |vb|
vb.name = "foohost"
end
end
वर्चुअलबॉक्स GUI का नाम: "फोहोस्ट"
टिप्पणियाँ: यदि आप name
एक प्रदाता कॉन्फ़िगरेशन ब्लॉक में विशेषता सेट करते हैं , तो वह नाम VirtualBox GUI में प्रदर्शित संपूर्ण नाम बन जाएगा।
संयुक्त उदाहरण: VM को निर्धारित करें- और प्रदाता नाम सेट करें
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "foohost"
config.vm.provider :virtualbox do |vb|
vb.name = "barhost"
end
end
वर्चुअलबॉक्स GUI नाम: "बारहोस्ट"
टिप्पणियाँ: यदि आप एक ही समय में दोनों विधियों का उपयोग करते हैं, name
तो प्रदाता कॉन्फ़िगरेशन ब्लॉक में दिया गया मान जीत जाता है। सरल zook
(टिप्पणीकार) इनपुट पर आधारित है
सेट hostname
(बोनस)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
टिप्पणियाँ: यह VM के अंदर hostname सेट करता है। यह hostname
VM में कमांड का आउटपुट होगा और यह भी कि क्या प्रॉम्प्ट में दिखाई दे रहा है जैसे vagrant@<hostname>
, यहाँ यह दिखेगाvagrant@buzbar
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.hostname = "buzbar"
config.vm.define "foohost"
config.vm.provider :virtualbox do |vb|
vb.name = "barhost"
end
end
तो वहाँ यह है। अब आप 3 अलग-अलग विकल्पों को जानते हैं जिन्हें आप सेट कर सकते हैं और उनके प्रभाव। मुझे लगता है कि यह इस बिंदु पर वरीयता का मामला है? (मैं वैग्रांट के लिए नया हूं, इसलिए मैं अभी तक सर्वोत्तम प्रथाओं से बात नहीं कर सकता।)
VBoxManage list vms
कमांड लाइन पर उपयोग कर सकते हैं ।
define VM
विधि नाम का उपयोग वैग्रांट स्टडआउट और लॉग set provider name
में किया जाता है , जबकि नाम का उपयोग प्रदाता के साथ बॉक्स के प्रबंधन के लिए किया जाता है। इसलिए दोनों प्रासंगिक हैं।
do... end
खाली होने पर आपको वास्तव में ब्लॉक की आवश्यकता नहीं है । config.vm.define "foohost"
ठीक काम करता है।
Bringing machine 'default' up with 'virtualbox' provider...
आस-पास रहता है जब आप निष्पादित करते हैंvagrant up
यह वह तरीका है जिसे मैंने व्यक्तिगत VMs को नाम सौंपा है। YOURNAMEHERE
अपने इच्छित नाम में परिवर्तन करें।
Vagrantfile की सामग्री:
Vagrant.configure("2") do |config|
# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "precise32"
# The url from where the 'config.vm.box' box will be fetched if it
# doesn't already exist on the user's system.
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
config.vm.define :YOURNAMEHERE do |t|
end
end
टर्मिनल आउटपुट:
$ vagrant status
Current machine states:
YOURNAMEHERE not created (virtualbox)
config.vm.define :app_name
भी काम करता है।
config.vm.define YOURNAMEHERE do |t| end
यदि आप 'डिफ़ॉल्ट' के बजाय कुछ और बदलना चाहते हैं, तो बस इन अतिरिक्त लाइनों को अपने Vagrantfile में जोड़ें:
config.vm.define "tendo" do |tendo|
end
जहां "टेंडो" वह नाम होगा जो डिफ़ॉल्ट के बजाय दिखाई देगा
मैं VagrantFile के अंदर परिभाषित करके नाम निर्दिष्ट करता हूं और होस्टनाम भी निर्दिष्ट करता हूं, इसलिए मैं अपने डिवाइस के ओएस से स्वतंत्र रूप से लिनक्स कमांड निष्पादित करते हुए अपने प्रोजेक्ट का नाम देखने का आनंद लेता हूं। ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
हाँ, वर्चुअलबॉक्स प्रदाता कुछ इस तरह से करते हैं:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
vagrant destroy
बाद फिर वापस लाने के बाद भी इसे डिफ़ॉल्ट कहा जा रहा है।
आप का मान बदलकर योनि डिफ़ॉल्ट मशीन नाम बदल सकते हैं config.vm.define
।
यहाँ सरल Vagrantfile जो का उपयोग करता है getopts और आप नाम गतिशील रूप से परिवर्तित कर सकते हैं:
# -*- mode: ruby -*-
require 'getoptlong'
opts = GetoptLong.new(
[ '--vm-name', GetoptLong::OPTIONAL_ARGUMENT ],
)
vm_name = ENV['VM_NAME'] || 'default'
begin
opts.each do |opt, arg|
case opt
when '--vm-name'
vm_name = arg
end
end
rescue
end
Vagrant.configure(2) do |config|
config.vm.define vm_name
config.vm.provider "virtualbox" do |vbox, override|
override.vm.box = "ubuntu/wily64"
# ...
end
# ...
end
इसलिए विभिन्न नाम का उपयोग करने के लिए, आप उदाहरण के लिए चला सकते हैं:
vagrant --vm-name=my_name up --no-provision
नोट: --vm-name
पैरामीटर को up
कमांड से पहले निर्दिष्ट करने की आवश्यकता है ।
या:
VM_NAME=my_name vagrant up --no-provision
यदि आपकी योनि फ़ाइल का उपयोग करने वाले कई लोग हैं - तो आप गतिशील रूप से नाम सेट करना चाह सकते हैं । नीचे बॉक्स और होस्टनाम के नाम के रूप में अपने HOST मशीन से उपयोगकर्ता नाम का उपयोग करने का तरीका नीचे दिया गया है :
require 'etc'
vagrant_name = "yourProjectName-" + Etc.getlogin
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.hostname = vagrant_name
config.vm.provider "virtualbox" do |v|
v.name = vagrant_name
end
end