流浪者特定于变量

在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

不过,这确实很麻烦,还需要我设置环境变量。
我根本不是ruby专家-有没有更好的方法来设置特定于提供者的变量?


最佳答案:

您可以定义提供程序,例如:

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

请确保覆盖任何特定于提供程序的变量,请参阅覆盖配置部分。