Bir vagrant kutusu başlatılırken 'varsayılan' adı nereden geliyor?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Bunu ayarlamanın bir yolu var mı?
Bir vagrant kutusu başlatılırken 'varsayılan' adı nereden geliyor?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Bunu ayarlamanın bir yolu var mı?
Yanıtlar:
Birden fazla seçeneği kafa karıştırıcı buldum, bu yüzden hepsini tam olarak ne yaptıklarını görmek için test etmeye karar verdim.
VirtualBox 4.2.16-r86992 ve Vagrant 1.3.3 kullanıyorum.
Adlı bir dizin oluşturdum nametest
ve koştum
vagrant init precise64 http://files.vagrantup.com/precise64.box
Varsayılan bir Vagrantfile oluşturmak için. Sonra VirtualBox GUI'yi açtım, böylece oluşturduğum kutuların hangi isimleri göstereceğini görebiliyordum.
Varsayılan Vagrantfile
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
end
VirtualBox GUI Adı: "nametest_default_1386347922"
Yorumlar: Ad varsayılan olarak DIRECTORY_default_TIMESTAMP biçimindedir.
VM'yi tanımlayın
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "foohost"
end
VirtualBox GUI Adı: "nametest_foohost_1386347922"
Yorumlar: Bir VM'yi açıkça tanımlarsanız, kullanılan ad 'varsayılan' belirtecinin yerini alır. Bu, konsoldaki vagrant çıktılarının adıdır . Adlı kullanıcının zook
(yorum yapan) girdisine dayalı sadeleştirme
Sağlayıcı Adını Ayarla
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
VirtualBox GUI Adı: "foohost"
Yorumlar:name
Özniteliği bir sağlayıcı yapılandırma bloğunda ayarlarsanız , bu ad VirtualBox GUI'de görüntülenen adın tamamı olur.
Birleşik Örnek: VM -ve- Set Sağlayıcı Adını tanımlayın
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
VirtualBox GUI Adı: "barhost"
Yorumlar: Her iki yöntemi de aynı anda kullanırsanız, name
sağlayıcı yapılandırma bloğuna atanan değer kazanır. Adlı kullanıcının zook
(yorum yapan) girdisine dayalı sadeleştirme
Set hostname
(BONUS)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
Yorumlar: Bu, VM içindeki ana bilgisayar adını ayarlar. Bu hostname
, VM'deki komutun çıktısı olacaktı ve aynı zamanda bilgi isteminde görünen şey vagrant@<hostname>
, burada şöyle görünecekvagrant@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
İşte orada. Artık ayarlayabileceğiniz 3 farklı seçenek ve bunların etkilerini biliyorsunuz. Sanırım bu noktada bir tercih meselesi? (Vagrant için yeniyim, bu yüzden henüz en iyi uygulamalarla konuşamıyorum.)
VBoxManage list vms
komut satırında kullanabilirsiniz.
define VM
Yöntem adının Vagrant stdout ve günlüklerinde kullanıldığını, set provider name
adın sağlayıcı ile kutuyu yönetmek için kullanıldığını belirtmek gerekir . Yani her ikisi de alakalı.
do... end
bloğa ihtiyacınız yoktur . config.vm.define "foohost"
gayet iyi çalışıyor.
Bringing machine 'default' up with 'virtualbox' provider...
yürüttüğünüzde bu hala devam ediyorvagrant up
Bu, bireysel VM'lere ad atamamın yoludur. YOURNAMEHERE
İstediğiniz isimle değiştirin .
Vagrantfile içeriği:
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
Terminal çıkışı:
$ vagrant status
Current machine states:
YOURNAMEHERE not created (virtualbox)
config.vm.define :app_name
de çalışır.
config.vm.define YOURNAMEHERE do |t| end
'Varsayılan' yerine başka bir şey değiştirmek isterseniz Vagrantfile'ınıza şu ek satırları ekleyin:
config.vm.define "tendo" do |tendo|
end
Burada "tendo" varsayılan yerine görünecek ad olacaktır
VagrantFile içinde tanımlayarak adı belirtin ve ayrıca ana bilgisayar adını belirtin, böylece cihazımın işletim sisteminden bağımsız olarak Linux komutlarını yürütürken projemin adını görmekten zevk alıyorum. ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
Evet, Virtualbox sağlayıcısı için böyle bir şey yapın:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
vagrant destroy
sonra geri getirdikten sonra hala varsayılan olarak adlandırıyor.
Değerini değiştirerek vagrant varsayılan makine adını değiştirebilirsiniz config.vm.define
.
İşte getopts kullanan ve adı dinamik olarak değiştirmenize izin veren basit Vagrantfile :
# -*- 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
Farklı bir ad kullanmak için, örneğin çalıştırabilirsiniz:
vagrant --vm-name=my_name up --no-provision
Not: --vm-name
Parametrenin up
komuttan önce belirtilmesi gerekir .
veya:
VM_NAME=my_name vagrant up --no-provision
Vagrant dosyanızı kullanan birçok kişi varsa - adı dinamik olarak ayarlamak isteyebilirsiniz . Aşağıda, kutunun adı ve ana bilgisayar adı olarak HOST makinenizdeki kullanıcı adını kullanarak nasıl yapılacağı örneği verilmiştir :
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