Sobrescreva as configurações do Vagrant localmente (por-dev)
Eu gostaria que a pergunta fosse respondida em geral, mas para ilustrar isso, aqui está um caso de uso:
Estou usando o Vagrant para um projeto simples de LMAP. Eu uso o Puppet autônomo para provisionamento. Agora, pode haver alguns desenvolvedores que se sentam atrás de um proxy e precisariam de alguma configuração adicional para a VM. Eu tenho coisas trabalhando no lado Puppet: eu posso passar o proxy IP (se houver) como um fato para fantoche noVagrantfile
e Puppet reage de acordo se for definido.
O único problema que tenho é: como os desenvolvedores podem especificar / substituir essa configuração para seu ambiente de desenvolvimento sem ter que alterarVagrantfile
(que está sob controle de versão e deve permanecer dev-environment-neutral)?
Se seria incrível se as pessoas pudessem substituir algumas configurações do Vagrant em um arquivo chamado, por exemplo,Vagrantfile.local
, que eu excluiria via.gitignore
.
Como um Vagrantfile é apenas Ruby, tentei o seguinte:
# Also load per-dev custom vagrant config
custom_vagrantfile = 'Vagrantfile.local'
load custom_vagrantfile if File.exist?(custom_vagrantfile)
A inclusão de arquivos basicamente funciona, mas parece que no arquivo incluído, eu não estou mais no mesmo contexto do Vagrant ...
Vagrant::Config.run do |config|
config.vm.provision :puppet do |puppet|
puppet.facter = { "proxy" => "proxy.host:80" }
end
end
... também "redefine" todos os outros valores de configuração de marionetes que eu fiz nos principaisVagrantfile
, o que me faz pensar que estou indo na direção errada aqui. Eu deveria notar que eu sou um noob total em Ruby;)
Alguém pode me dar uma dica ou até mesmo uma solução de trabalho para como personalização por-dev poderia ser feito aqui em geral?