【发布时间】:2018-09-27 11:46:42
【问题描述】:
我正在尝试使用由多个提供商备份的多台机器编写 Vagrantfile。我特别希望能够一次生成不止一台这样的机器。基本上我想运行命令:
vagrant up vb_vm aws_vm
我知道 --provider 标志,但这将适用于 所有 正在生成的机器,因此不适用于我的情况。
这是我的(非常精简但仍然有效的)Vagrantfile:
Vagrant.configure(2) do |config|
config.vm.define 'vb_vm' do |vb_vm|
vb_vm.vm.box='ubuntu/trusty64' # from hashicorp
vb_vm.vm.provider :virtualbox do |v|
end
end
config.vm.define 'aws_vm' do |aws_vm|
aws_vm.vm.box = "aws/dummy"
aws_vm.vm.box_url = 'https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box'
aws_vm.vm.provider :aws do |a, override|
a.access_key_id = 'something'
a.secret_access_key = 'something'
a.ami='something'
end
end
end
vagrant box list 表明用于每个定义的框类型正确:
aws/dummy (aws, 0)
ubuntu/trusty64 (virtualbox, 20150928.0.0)
但是vagrant status 给了我(请注意,我确实有可用的 lxc 插件,它已成为默认插件)
当前机器状态:
aws_vm not created (aws)
vb_vm not created (lxc)
所以这说明用多个provider生成多台机器确实是可能的,但是provider的选择是错误的。
我知道设置默认提供程序的技巧,但这只会让事情变得更糟(到处都使用虚拟机,根本不使用aws...)
我也知道旧的 stackoverflow 问题,但它们与更旧版本的 Vagrant 有关。
所以问题是:我如何确保定义的每个框都使用其正确的提供者?
【问题讨论】:
标签: amazon-web-services vagrant