[configuration] Vagrant ‘기본’컴퓨터 이름을 변경하는 방법?

방랑 상자를 시작할 때 ‘기본’이라는 이름은 어디에서 유래합니까?

$ 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를 열어서 만든 상자가 어떤 이름으로 표시되는지 확인할 수있었습니다.

  1. 기본 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입니다.

  2. 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의 (댓글 작성기) 입력을 기반으로 단순화

  3. 공급자 이름 설정

    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의 (댓글 작성기) 입력을 기반으로 단순화

  4. 세트 hostname(BONUS)

    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
      config.vm.hostname = "buzbar"
    end
    

    주석 : VM 내부의 호스트 이름을 설정합니다. 이것은 hostnameVM 의 명령 출력이며 프롬프트와 같이 표시됩니다. 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