回答:
複数のオプションがわかりにくいので、すべてをテストして、それらの機能を正確に確認することにしました。
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を明示的に定義する場合、使用される名前がトークン「デフォルト」を置き換えます。これは、コンソールのvagrant出力の名前です。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
メソッド名はVagrant stdoutとログで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
「デフォルト」以外の何かを変更したい場合は、次の行を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