Vagrantfileのパスを明示的に指定する方法はありますか?私の会社は次のようなことをしたいと考えています。Confluenceマシンでテストするには、vagrant spinup confluence
のようなコマンドを入力し、それをConfluence環境を含む別のディレクトリのVagrantfileにポイントして、これらすべてを起動します。マシン。
ただし、どのVagrantfileを使用するかを明示的に示す方法はないようで、Rubyはある程度(非常に)初めてなので、独自のプラグインを作成するのに苦労しています。誰かが何をすべきかについての推奨事項を持っていますか?それとも誰かがこれに似たことをしましたか?
別個のVagrantfileを用意する必要はありません。同じファイルで複数のVMを定義できます。こちらのドキュメントをご覧ください: http://docs.vagrantup.com/v2/multi-machine/index.html
「通常」の環境でVMを1つ使用し、「コンフルエンス」環境で1つのVMを使用している場合は、それぞれを定義するだけのケースです。 VMおよびvagrant up
-特定のVMを使用します。
それぞれの環境を構成する複数のマシンがある場合、2つのオプションがあります。正規表現を使用して、コマンドに名前を付けて正しく入力することを確認できます。または、Vagrantfileに少しロジックを入れて、人々が簡単にできるようにすることができます。 。
たとえば、Vagrantfileを少しハックすると、次のことができます。
Vagrant.configure('2') do |config|
if ARGV[1] == 'confluence'
ARGV.delete_at(1)
confluence = true
else
confluence = false
end
config.vm.provider :virtualbox do |virtualbox, override|
#virtualbox.gui = true
virtualbox.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
virtualbox.customize ["modifyvm", :id, "--memory", 512]
override.vm.box = 'Ubuntu 12.10 x64 Server'
override.vm.box_url = 'http://goo.gl/wxdwM'
end
if confluence == false
config.vm.define :normal1 do |normal1|
normal1.vm.hostname = 'normal1'
normal1.vm.network :private_network, ip: "192.168.1.1"
end
config.vm.define :normal2 do |normal2|
normal2.vm.hostname = 'normal2'
normal2.vm.network :private_network, ip: "192.168.1.2"
end
end
if confluence == true
config.vm.define :confluence1 do |confluence1|
confluence1.vm.hostname = 'confluence1'
confluence1.vm.network :private_network, ip: "192.168.1.3"
end
config.vm.define :confluence2 do |confluence2|
confluence2.vm.hostname = 'confluence2'
confluence2.vm.network :private_network, ip: "192.168.1.4"
end
end
end
今vagrant up
は、通常のVMとvagrant up confluence
は、あなたの合流VMを表示します!
Andrew Lorenteの答えに加えて、VAGRANT_VAGRANTFILE
環境変数を使用してVagrantfile
のファイル名を指定することもできます。これは、現在の作業ディレクトリを変更しないというVAGRANT_CWD
よりも優れており、相対パスに依存している場合に役立ちます。
たとえば、次はvagrant up
に対してVagrantfile.other
を実行します。
VAGRANT_VAGRANTFILE=Vagrantfile.other vagrant up
他の回答者は、この特定のケースでは別個のVagrantfilesを必要としなかったと正解ですが、Vagrantfileパスを指定するための正当な使用法があると思います-vagrant ssh-config
スクリプト内の情報など。
幸いにも、VAGRANT_CWD
環境変数:
VAGRANT_CWD=~/some/path/ vagrant ssh-config
これはどこにも文書化されていないようですが、 ソース内 で確認できます。
必要に応じて、必要に応じてさまざまなVagrantfile
を使用できます。プロジェクトの新しいディレクトリを作成し(1つまたは複数のVMで構成できます)、そのディレクトリにcd
を実行し、vagrant init
を実行してVagrantに新しいVagrantfile
を作成させます。その後、ニーズに合わせてカスタマイズできます。 VM新しいVagrantfile
を使用して開始するには、それを含むディレクトリ内からvagrant up
を実行するだけです。
シェルコマンドを括弧で囲むとサブシェルが作成されるため、Git for Windows(またはLinux/OS Xのbash)から次のことができます。
(cd test/Ruby; vagrant up)