Vagrant boxを起動したときに 'default'という名前はどこから来ましたか?
$ 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'が使用される名前に置き換えられます。これが名前です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に表示される名前全体になります。
組み合わせた例: 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
(コメントアウト)の入力に基づいて単純化する
hostname
を設定する(BONUS)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
コメント:これはVM内のホスト名を設定します。これはVMのhostname
コマンドの出力になります。また、これは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に以下の追加行を追加してください。
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
VagrantFileの中にDefineで名前を指定し、さらにhostnameを指定しているので、Linuxコマンドを独立して実行しながら自分のプロジェクトの名前を確認できます。私のデバイスのOS ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
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
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