gpt4 book ai didi

ruby - 可以从 Vagrantfile 中引用命令行选择的提供程序吗

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:00 24 4
gpt4 key购买 nike

我希望能够更改我的人偶 list 的行为,具体取决于它们运行的​​位置。目前,我正在使用这个 hack 来导出 vagrant provider(通过 facter):

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

[... stuff ...]

config.vm.provision "puppet" do |pp|
pp.manifests_path = ".puppet"
pp.facter = {"vagrant_provider" => ""}
end

config.vm.provider :rackspace do |rs, override|
[... stuff ...]
override.vm.provision "puppet" do |pp|
pp.manifests_path = ".puppet"
pp.facter = {"vagrant_provider" => "rackspace"}
end

[... more stuff ...]

但显然这感觉有点脏(而且在添加更多提供者时会变得更难看)。有没有办法只写这个单 block

config.vm.provision "puppet" do |pp|
pp.facter = {"vagrant_provider" => Vagrant.selected_provider} ## pseudocode!
end

所以,当这样调用 vagrant 时

$ vagrant up --provider=rackspace

我们将正确的提供商信息交给 facter?我无法弄清楚,要么是因为我没有得到 ruby ,要么是因为我没有 Vagrant ,或者可能两者兼而有之,非常感谢!

最佳答案

我的 ruby 不是最好的,所以可能有更有效的方法来做到这一点,但以下应该有效:

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

# Get the provider!
provider = ''
ARGV.each do|a|
if a.include?('--provider=')
provider = a[11, a.length]
end
end

config.vm.provision "puppet" do |pp|
pp.facter = {"vagrant_provider" => provider}
end

end

关于ruby - 可以从 Vagrantfile 中引用命令行选择的提供程序吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21297667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com