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 nametestdan 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 zookmasukan (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 nameatribut 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 namedalam blok konfigurasi penyedia menang. Menyederhanakan berdasarkan zookmasukan (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 hostnameperintah 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 vmspada baris perintah.
define VMnama metode digunakan dalam stdout dan log Vagrant, sementara set provider namenama digunakan untuk mengelola kotak dengan penyedia. Jadi keduanya relevan.
do... endblok 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 YOURNAMEHEREnama 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_nameberfungsi 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 destroykemudian 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-nameParameter perlu ditentukan sebelum upperintah.
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