ชื่อ 'ค่าเริ่มต้น' มาจากไหนเมื่อเปิดตัวกล่องคนเร่ร่อน?
$ 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 เริ่มต้น จากนั้นฉันก็เปิด VirtualBox GUI เพื่อที่ฉันจะได้เห็นชื่อของกล่องที่ฉันสร้างจะปรากฏขึ้น
Default Vagrantfile
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
end
ชื่อ VirtualBox GUI: "nametest_default_1386347922"
ความคิดเห็น: ชื่อเริ่มต้นเป็นรูปแบบ DIRECTORY_default_TIMESTAMP
กำหนด 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
ชื่อ VirtualBox GUI: "nametest_foohost_1386347922"
ความคิดเห็น: หากคุณกำหนด VM อย่างชัดเจนชื่อที่ใช้จะแทนที่โทเค็น 'ค่าเริ่มต้น' นี่คือชื่อคนจรจัดเอาต์พุตบนคอนโซล ลดความซับซ้อนตามการ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
ชื่อ VirtualBox GUI: "foohost"
ความคิดเห็น: หากคุณตั้งค่า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
ชื่อ VirtualBox GUI: "barhost"
ความคิดเห็น: หากคุณใช้ทั้งสองวิธีในเวลาเดียวกันค่าที่กำหนดให้nameในบล็อกการกำหนดค่าของผู้ให้บริการจะเป็นผู้ชนะ ลดความซับซ้อนตามการzookป้อนข้อมูลของ (ผู้วิจารณ์)
ชุดhostname(โบนัส)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
ความคิดเห็น:ชุดชื่อโฮสต์ภายใน VM นี่จะเป็นผลลัพธ์ของ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 แบบที่คุณสามารถตั้งค่าและเอฟเฟกต์ที่มี ฉันคิดว่ามันเป็นเรื่องของการตั้งค่าที่จุดนี้? (ฉันใหม่สำหรับ Vagrant ดังนั้นฉันยังไม่สามารถพูดถึงแนวทางปฏิบัติที่ดีที่สุดได้)
VBoxManage list vmsบนบรรทัดคำสั่ง
define VMชื่อวิธีการใช้ใน stdout และบันทึกของ Vagrant ในขณะที่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
โดยที่ "tendo" จะเป็นชื่อที่จะปรากฏขึ้นแทนที่จะเป็นค่าเริ่มต้น
ฉันระบุชื่อโดยกำหนดภายในVagrantFileและระบุชื่อโฮสต์ดังนั้นฉันสนุกกับการเห็นชื่อโครงการของฉันในขณะที่รันคำสั่ง Linux อย่างอิสระจากระบบปฏิบัติการของอุปกรณ์ ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
ใช่สำหรับผู้ให้บริการ Virtualbox ทำสิ่งนี้:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
vagrant destroyแล้วนำกลับขึ้นมันก็ยังเรียกมันว่าเริ่มต้น
คุณสามารถเปลี่ยนชื่อเครื่องเริ่มต้นคนจรจัดได้โดยเปลี่ยนค่าconfig.vm.defineเป็น
นี่คือไฟล์ Vagrant ธรรมดาที่ใช้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