我希望这个问题得到一般性的回答,但为了说明这一点,这里有一个用例:
我在用Vagrant做一个简单的LMAP项目.我使用独立的Puppet进行资源调配.现在,可能有一些开发人员坐在代理后面,他们需要对VM进行一些额外的配置.我在Puppet方面做了一些工作:我可以将代理IP(如果有)作为事实传递给Vagrantfile
中的Puppet,如果设置了代理IP,Puppet会做出相应的react .
我唯一的问题是:开发人员如何为他们的开发环境指定/覆盖此设置,而不必更改Vagrantfile
(它受版本控制,必须保持与开发环境无关)?
如果人们可以覆盖一个名为Vagrantfile.local
的文件中的一些流浪设置,那就太棒了,我会通过.gitignore
排除这个文件.
由于Vagrantfile只是Ruby,我try 了以下方法:
# Also load per-dev custom vagrant config
custom_vagrantfile = 'Vagrantfile.local'
load custom_vagrantfile if File.exist?(custom_vagrantfile)
文件包含基本上是有效的,但看起来在包含的文件中,我不再处于相同的流浪环境中了...
Vagrant::Config.run do |config|
config.vm.provision :puppet do |puppet|
puppet.facter = { "proxy" => "proxy.host:80" }
end
end
... 还"重置"了我在main Vagrantfile
中创建的所有其他puppet配置值,这让我觉得我走错了方向.我应该注意到我在Ruby是个彻头彻尾的笨蛋;)
有谁能给我一个提示,或者甚至是一个有效的解决方案,来说明如何在这里进行每开发人员定制?