답변:
여러 옵션이 혼란스러워서 모든 작업을 테스트하여 정확히 무엇을하는지 결정했습니다.
VirtualBox 4.2.16-r86992 및 Vagrant 1.3.3을 사용하고 있습니다.
라는 디렉토리를 nametest
만들고 실행했습니다.
vagrant init precise64 http://files.vagrantup.com/precise64.box
기본 Vagrantfile을 생성합니다. 그런 다음 VirtualBox GUI를 열어서 만든 상자가 어떤 이름으로 표시되는지 확인할 수있었습니다.
기본 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을 명시 적으로 정의하면 사용 된 이름이 'default'토큰을 대체합니다. 이 이름 방랑 콘솔에 출력. 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
(BONUS)
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
있는 동안, 메소드 이름은 방랑의 표준 출력 및 로그에 사용되는 set provider name
이름이 공급자와 함께 상자를 관리하는 데 사용됩니다. 둘 다 관련이 있습니다.
do... end
비어 있으면 실제로 블록 이 필요하지 않습니다 . config.vm.define "foohost"
잘 작동합니다.
Bringing machine 'default' up with 'virtualbox' provider...
실행할 때 여전히 유지 됩니다.vagrant up
이것이 개별 VM에 이름을 할당하는 방식입니다. 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
'default'대신 다른 것을 변경하려면 Vagrantfile에 다음 줄을 추가하십시오.
config.vm.define "tendo" do |tendo|
end
여기서 "tendo"는 기본값 대신 표시되는 이름입니다.
예, 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
.
다음은 getopts 를 사용 하고 이름을 동적으로 변경할 수 있는 간단한 Vagrantfile입니다 .
# -*- 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
vagrant 파일을 사용하는 사람들이 많은 경우 이름을 동적으로 설정 하려고 할 수 있습니다 . 아래는 호스트 컴퓨터의 사용자 이름을 상자 이름 및 호스트 이름으로 사용하는 방법의 예 입니다 .
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