2015-06-15 97 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