【发布时间】:2023-03-28 20:20:01
【问题描述】:
我希望这个问题得到一般性的回答,但为了说明这一点,这里有一个用例:
我将 Vagrant 用于一个简单的 LMAP 项目。我使用独立的 Puppet 进行配置。现在,可能有一些开发人员坐在代理后面,他们需要对 VM 进行一些额外的配置。我在 Puppet 方面有一些工作:我可以将代理 IP(如果有)作为事实传递给 Vagrantfile 中的 puppet,如果已设置,Puppet 会做出相应的反应。
我遇到的唯一问题是:开发人员如何在不更改 Vagrantfile(受版本控制且必须保持 dev-environment-neutral)的情况下为其开发环境指定/覆盖此设置?
如果人们可以在一个名为例如的文件中覆盖一些 Vagrant 设置,那就太棒了。 Vagrantfile.local,我将通过 .gitignore 排除。
由于 Vagrantfile 只是 Ruby,我尝试了以下方法:
# Also load per-dev custom vagrant config
custom_vagrantfile = 'Vagrantfile.local'
load custom_vagrantfile if File.exist?(custom_vagrantfile)
文件包含基本上可以工作,但看起来在包含的文件中,我不再处于同一个 Vagrant 上下文中......
Vagrant::Config.run do |config|
config.vm.provision :puppet do |puppet|
puppet.facter = { "proxy" => "proxy.host:80" }
end
end
... 还“重置”了我在主 Vagrantfile 中创建的所有其他 puppet 配置值,这让我觉得我在这里走错了方向。我应该注意,我是 Ruby 的菜鸟;)
谁能给我一个提示,甚至是一个可行的解决方案,说明如何在这里完成每个开发者的定制?
【问题讨论】: