Dari mana asal nama 'default' saat meluncurkan kotak gelandangan?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Apakah ada cara untuk mengatur ini?
Dari mana asal nama 'default' saat meluncurkan kotak gelandangan?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Apakah ada cara untuk mengatur ini?
Jawaban:
Saya menemukan beberapa opsi membingungkan, jadi saya memutuskan untuk menguji semuanya untuk melihat apa yang mereka lakukan.
Saya menggunakan VirtualBox 4.2.16-r86992 dan Vagrant 1.3.3.
Saya membuat direktori bernama nametest
dan berlari
vagrant init precise64 http://files.vagrantup.com/precise64.box
untuk menghasilkan Vagrantfile default. Kemudian saya membuka GUI VirtualBox sehingga saya bisa melihat apa nama kotak yang saya buat akan muncul.
Default Vagrantfile
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
end
Nama GUI VirtualBox: "nametest_default_1386347922"
Komentar: Nama default ke format DIRECTORY_default_TIMESTAMP.
Tentukan VM
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "foohost"
end
Nama GUI VirtualBox: "nametest_foohost_1386347922"
Komentar: Jika Anda secara eksplisit mendefinisikan VM, nama yang digunakan menggantikan token 'default'. Ini adalah keluaran nama gelandangan di konsol. Menyederhanakan berdasarkan zook
masukan (komentator)
Tetapkan Nama Penyedia
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
Nama GUI VirtualBox: "foohost"
Komentar: Jika Anda mengatur name
atribut di blok konfigurasi penyedia, nama itu akan menjadi seluruh nama yang ditampilkan di GUI VirtualBox.
Contoh Gabungan: Tetapkan VM -dan- Tetapkan Nama Penyedia
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
Nama GUI VirtualBox: "barhost"
Komentar: Jika Anda menggunakan kedua metode secara bersamaan, nilai yang ditetapkan name
dalam blok konfigurasi penyedia menang. Menyederhanakan berdasarkan zook
masukan (komentator)
Set hostname
(BONUS)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
Komentar: Ini menetapkan nama host di dalam VM. Ini akan menjadi output dari hostname
perintah di VM dan juga ini adalah apa yang terlihat di prompt seperti vagrant@<hostname>
, di sini akan terlihat sepertivagrant@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
Jadi begitulah. Anda sekarang tahu 3 opsi berbeda yang dapat Anda atur dan efek yang dimilikinya. Saya kira ini masalah pilihan saat ini? (Saya baru mengenal Vagrant, jadi saya belum bisa berbicara dengan praktik terbaik.)
VBoxManage list vms
pada baris perintah.
define VM
nama metode digunakan dalam stdout dan log Vagrant, sementara set provider name
nama digunakan untuk mengelola kotak dengan penyedia. Jadi keduanya relevan.
do... end
blok jika kosong. config.vm.define "foohost"
berfungsi dengan baik.
Bringing machine 'default' up with 'virtualbox' provider...
ada ketika Anda mengeksekusivagrant up
Ini adalah cara saya menetapkan nama untuk masing-masing VM. Ubah YOURNAMEHERE
nama yang Anda inginkan.
Isi dari 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
Output terminal:
$ vagrant status
Current machine states:
YOURNAMEHERE not created (virtualbox)
config.vm.define :app_name
berfungsi juga.
config.vm.define YOURNAMEHERE do |t| end
Jika Anda ingin mengubah hal lain alih-alih 'default', maka tambahkan saja baris tambahan ini ke Vagrantfile Anda:
config.vm.define "tendo" do |tendo|
end
Di mana "tendo" akan menjadi nama yang akan muncul alih-alih default
Saya menentukan nama dengan mendefinisikan di dalam VagrantFile dan juga menentukan nama host jadi saya senang melihat nama proyek saya saat menjalankan perintah Linux secara independen dari OS perangkat saya. ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
Ya, untuk penyedia Virtualbox melakukan sesuatu seperti ini:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
vagrant destroy
kemudian membawanya kembali itu masih menyebutnya default.
Anda dapat mengubah nama mesin default gelandangan dengan mengubah nilai config.vm.define
.
Berikut adalah Vagrantfile sederhana yang menggunakan getopts dan memungkinkan Anda untuk mengubah nama secara dinamis:
# -*- 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
Jadi untuk menggunakan nama yang berbeda, Anda dapat menjalankan misalnya:
vagrant --vm-name=my_name up --no-provision
Catatan: --vm-name
Parameter perlu ditentukan sebelum up
perintah.
atau:
VM_NAME=my_name vagrant up --no-provision
Jika ada banyak orang yang menggunakan file gelandangan Anda - Anda mungkin ingin mengatur nama secara dinamis . Di bawah ini adalah contoh bagaimana melakukannya menggunakan nama pengguna dari mesin HOST Anda sebagai nama kotak dan nama 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