방랑 상자를 시작할 때 ‘기본’이라는 이름은 어디에서 유래합니까?
$ 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를 열어서 만든 상자가 어떤 이름으로 표시되는지 확인할 수있었습니다.
-
기본 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를 처음 사용하므로 아직 모범 사례에 대해 이야기 할 수 없습니다.)
답변
이것이 개별 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)
답변
‘default’대신 다른 것을 변경하려면 Vagrantfile에 다음 줄을 추가하십시오.
“vagrant status”를 사용할 때베이스 박스 이름 변경
config.vm.define "tendo" do |tendo|
end
여기서 “tendo”는 기본값 대신 표시되는 이름입니다.
답변
VagrantFile 내부 에 정의 하여 이름을 지정하고 호스트 이름 도 지정 하므로 장치의 OS와 독립적으로 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
답변
의 값을 변경하여 방랑 기본 시스템 이름을 변경할 수 있습니다 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