2015-06-15 53 views
2

在vagrantfile中,我想设置一些提供者特定变量。意识到我不能在这些路段设置的值(because of this)后:流氓提供者特定变量

config.vm.provider "virtualbox" do |vb, override| 
    ... 
end 

...这是我的解决方法 - 基本上,我设置一个环境变量,我可以检查,然后设置相应的供应商设置:

if ENV['VAGRANT_PROVIDER'] == 'virtualbox' 

    config.hostmanager.enabled = true 
    tld = "local" 
    dbadmin_pass = "vagrant" 

    elsif ENV['VAGRANT_PROVIDER'] == 'aws' 

    config.hostmanager.enabled = false 
    tld = "com" 
    dbadmin_pass = "myprodpass" 

    else 

    raise Vagrant::Errors::VagrantError.new, "Missing environment variable or invalid value: VAGRANT_PROVIDER [virtualbox|aws]" 

    end 

虽然这真的很黑,并且需要我设置环境变量。

我不是一个红宝石专家 - 有没有更好的方法来设置提供商的具体变量?

回答

-1

您可以定义供应商,如:

config.vm.provider "virtualbox" do |vb| 
    config.hostmanager.enabled = true 
    tld = "local" 
    dbadmin_pass = "vagrant" 
end 

config.vm.provider :aws do |aws| 
    config.hostmanager.enabled = false 
    tld = "com" 
    dbadmin_pass = "myprodpass" 
end 

然后开始你的无业游民:

vagrant up --provider=virtualbox 

vagrant up --provider=aws 

确保您覆盖任何供应商特定的变量,看Vagrant Docs - 覆盖配置部分。

+0

我知道提供程序的配置以及它是如何工作的 - 但它不回答我的问题,因为您的示例中的代码不起作用。你有没有尝试过,或者根据问题中的链接? – phpPhil