Tên 'mặc định' đến từ đâu khi khởi chạy một hộp mơ hồ?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Có cách nào để thiết lập điều này?
Tên 'mặc định' đến từ đâu khi khởi chạy một hộp mơ hồ?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Có cách nào để thiết lập điều này?
Câu trả lời:
Tôi thấy nhiều lựa chọn khó hiểu, vì vậy tôi quyết định thử nghiệm tất cả chúng để xem chính xác những gì chúng làm.
Tôi đang sử dụng VirtualBox 4.2.16-r86992 và Vagrant 1.3.3.
Tôi đã tạo một thư mục được gọi nametest
và chạy
vagrant init precise64 http://files.vagrantup.com/precise64.box
để tạo Vagrantfile mặc định. Sau đó, tôi đã mở GUI VirtualBox để tôi có thể thấy tên mà các hộp tôi tạo sẽ hiển thị là.
Vagrantfile mặc định
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
end
Tên GUI VirtualBox: "nametest_default_1386347922"
Nhận xét: Tên mặc định theo định dạng DIRECTORY_default_TIMESTAMP.
Xác định 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
Tên GUI VirtualBox: "nametest_foohost_1386347922"
Nhận xét: Nếu bạn xác định rõ ràng VM, tên được sử dụng sẽ thay thế mã thông báo 'mặc định'. Đây là tên đầu ra mơ hồ trên bàn điều khiển. Đơn giản hóa dựa trên zook
đầu vào (bình luận viên)
Đặt tên nhà cung cấp
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
Tên GUI VirtualBox: "foohost"
Nhận xét: Nếu bạn đặt name
thuộc tính trong khối cấu hình nhà cung cấp, tên đó sẽ trở thành toàn bộ tên được hiển thị trong GUI VirtualBox.
Ví dụ kết hợp: Xác định VM -and- Đặt tên nhà cung cấp
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
Tên GUI VirtualBox: "barhost"
Nhận xét: Nếu bạn sử dụng cả hai phương pháp cùng một lúc, giá trị được chỉ định name
trong khối cấu hình nhà cung cấp sẽ thắng. Đơn giản hóa dựa trên zook
đầu vào (bình luận viên)
Đặt hostname
(TIỀN THƯỞNG)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
Nhận xét: Điều này đặt tên máy chủ bên trong VM. Đây sẽ là đầu ra của hostname
lệnh trong VM và đây cũng là thứ hiển thị trong lời nhắc như thế vagrant@<hostname>
, ở đây nó sẽ trông như thế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
Nó đây rồi Bây giờ bạn biết 3 tùy chọn khác nhau mà bạn có thể thiết lập và các hiệu ứng họ có. Tôi đoán đó là vấn đề ưu tiên vào thời điểm này? (Tôi chưa quen với Vagrant, vì vậy tôi chưa thể nói về các thực tiễn tốt nhất.)
VBoxManage list vms
trên dòng lệnh.
define VM
tên phương thức được sử dụng trong thiết bị xuất chuẩn và nhật ký của Vagrant, trong khi set provider name
tên được sử dụng để quản lý hộp với nhà cung cấp. Vì vậy, cả hai đều có liên quan.
do... end
khối nếu nó trống. config.vm.define "foohost"
hoạt động tốt
Bringing machine 'default' up with 'virtualbox' provider...
xung quanh khi bạn thực thivagrant up
Đây là cách tôi đã gán tên cho các VM riêng lẻ. Thay đổi YOURNAMEHERE
tên bạn muốn
Nội dung của 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
Đầu ra thiết bị đầu cuối:
$ vagrant status
Current machine states:
YOURNAMEHERE not created (virtualbox)
config.vm.define :app_name
nó cũng hoạt động.
config.vm.define YOURNAMEHERE do |t| end
Nếu bạn muốn thay đổi bất cứ điều gì khác thay vì 'mặc định', thì chỉ cần thêm các dòng bổ sung này vào Vagrantfile của bạn:
config.vm.define "tendo" do |tendo|
end
Trong đó "tendo" sẽ là tên sẽ xuất hiện thay vì mặc định
Tôi chỉ định tên bằng cách xác định bên trong VagrantFile và cũng chỉ định tên máy chủ để tôi thấy tên dự án của mình trong khi thực hiện các lệnh Linux độc lập với HĐH của thiết bị. ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
Có, đối với nhà cung cấp Virtualbox hãy làm một cái gì đó như thế này:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
vagrant destroy
sau đó đưa nó trở lại, nó vẫn gọi nó là mặc định.
Bạn có thể thay đổi tên máy mặc định mơ hồ bằng cách thay đổi giá trị của config.vm.define
.
Đây là Vagrantfile đơn giản sử dụng getopts và cho phép bạn thay đổi tên động:
# -*- 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
Vì vậy, để sử dụng tên khác nhau, bạn có thể chạy ví dụ:
vagrant --vm-name=my_name up --no-provision
Lưu ý: --vm-name
Tham số cần được chỉ định trước up
lệnh.
hoặc là:
VM_NAME=my_name vagrant up --no-provision
Trong trường hợp có nhiều người sử dụng tệp mơ hồ của bạn - bạn có thể muốn đặt tên động . Dưới đây là ví dụ về cách thực hiện bằng tên người dùng từ máy HOST của bạn làm tên của hộp và tên máy chủ:
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