我想直接在vagrantfile中指定默认情况下为每个VM使用哪个提供程序.
例如,给定这个vagrantfile:
# Vagrantfile
[...]
config.vm.define 'dev_vm' do |machine|
machine.vm.provider :libvirt do |os|
[...]
end
# machine.default_provider = :libvirt
end
config.vm.define 'production_vm' do |machine|
machine.vm.provider :openstack do |os|
[...]
end
# machine.default_provider = :openstack
end
Run Code Online (Sandbox Code Playgroud)
要将以下内容启动到VM,我必须发出两个命令:
vagrant up --provider=libvirt dev_vm
vagrant up --provider=openstack production_vm
Run Code Online (Sandbox Code Playgroud)
我想把它们都用一个vagrant up,特别是因为我运行了更多的机器.像评论这样的一些配置machine.default_provider = :openstack会非常棒.
有办法吗?
我认为没有任何简单的方法可以做到这一点.Vagrant目前在整个运行期间将使用相同的提供程序,因此可能需要进行相当大的代码更改才能支持此功能.
也许包装脚本现在是最简单的解决方案.
另一种解决方法是为VM使用单独的Vagrantfiles并VAGRANT_DEFAULT_PROVIDER在每个VM中设置.如果有很多常见配置,您可以将其提取到例如Vagrantfile.common其他人包含的配置.就像是:
# Vagrantfile 1
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'libvirt'
# assume the common config is in parent directory
load File.expand_path('../../Vagrantfile.common', __FILE__)
Vagrant.configure('2') do |config|
# ...
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3883 次 |
| 最近记录: |