add*_*nix 28 ruby plugins development-environment provisioning vagrant
有没有办法明确指定Vagrantfile的路径?我的公司希望做这样的事情:要在汇合机器上进行测试,键入一个命令vagrant spinup confluence,然后将其指向包含汇合环境的不同目录中的Vagrantfile,然后调出所有这些机器.
但是,看起来没有任何方法可以明确说明要使用的Vagrantfile,而且我在ruby中有点(非常)新的,所以我很难为它编写自己的插件.有没有人有关于该做什么的建议?或者有人做过类似的事吗?
Mar*_*son 54
继Andrew Lorente的回答之后,您还可以使用VAGRANT_VAGRANTFILE环境变量来指定文件名Vagrantfile.这有利于VAGRANT_CWD不改变当前工作目录,这在依赖相对路径时是有用的.
例如,以下内容将运行vagrant up于Vagrantfile.other:
VAGRANT_VAGRANTFILE=Vagrantfile.other vagrant up
Run Code Online (Sandbox Code Playgroud)
Mat*_*per 22
不需要单独的Vagrantfile,您可以在同一个文件中定义多个VM.请参阅此处的文档:http://docs.vagrantup.com/v2/multi-machine/index.html
如果您只是在"正常"环境中使用一个VM而在"融合"环境中使用一个VM,那么只需定义每个VM和vagrant up特定VM即可.
如果你有多个机器构成你的每个环境,那么你有两个选择,你可以使用正则表达式并确保正确命名和输入命令,或者你可以在你的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
Run Code Online (Sandbox Code Playgroud)
现在vagrant up提出你的正常虚拟现实,并vagrant up confluence提出你的融合vm!
Eri*_*all 20
虽然其他回答者是正确的,这个特殊情况不需要单独的Vagrantfiles,但我认为有合法的用途来指定Vagrantfile路径 - vagrant ssh-config例如,在脚本中读取信息.
令人高兴的是,您可以通过设置VAGRANT_CWD环境变量来实现:
VAGRANT_CWD=~/some/path/ vagrant ssh-config
Run Code Online (Sandbox Code Playgroud)
这似乎没有在任何地方记录,但您可以在源中看到它.