web-dev-qa-db-ja.com

Vagrantの「デフォルト」のマシン名を変更するにはどうすればいいですか?

Vagrant boxを起動したときに 'default'という名前はどこから来ましたか?

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...

これを設定する方法はありますか?

215
Kyle Kelley

私は複数の選択肢を混乱させていることに気付いたので、私はそれらがすべて何をするのかを確かめるためにそれらすべてをテストすることにしました。

私は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'が使用される名前に置き換えられます。これが名前ですvagrantコンソールに出力されます。 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に表示される名前全体になります。

    組み合わせた例: Define 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内のホスト名を設定します。これはVMのhostnameコマンドの出力になります。また、これは[email protected]<hostname>のようにプロンプ​​トに表示されます。ここでは[email protected]のようになります。

最終コード

    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が初めてなので、まだベストプラクティスについて話すことはできません。)

321
odigity

これは私が個々の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)
57
nikhil

'default'の代わりに何か他のものを変更したい場合は、Vagrantfileに以下の追加行を追加してください。

"vagrant status"を使用している場合、ベースボックス名を変更してください

 config.vm.define "tendo" do |tendo|
  end

「tendo」がデフォルトの代わりに表示される名前になります。

17
Arbab Nazar

はい、Virtualboxプロバイダの場合は次のようにします。

Vagrant.configure("2") do |config|
    # ...other options...
    config.vm.provider "virtualbox" do |p|
        p.name = "something-else"
    end
end
6
cmur2

VagrantFileの中にDefineで名前を指定し、さらにhostnameを指定しているので、Linuxコマンドを独立して実行しながら自分のプロジェクトの名前を確認できます。私のデバイスのOS ✌️

config.vm.define "abc"
config.vm.hostname = "abc"
5
muratgozel

config.vm.defineの値を変更することで、vagrantのデフォルトのマシン名を変更することができます。

これは、getoptsを使用して動的に名前を変更できる単純なVagrantファイルです。

# -*- 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
4
kenorb

Vagrantファイルを使用している人が多い場合は、名前を動的に設定を使用することをお勧めします。ボックス名とホスト名にあなたのHost machineからのusernameを使ってそれを行う方法の例を以下に示します。

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
0
Anton Sluchak