ชื่อ 'ค่าเริ่มต้น' มาจากไหนเมื่อเปิดตัวกล่องคนเร่ร่อน?
$ 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