A resposta realmente depende de como você quer que a versão seja controlada. Existem algumas abordagens principais:
-
Coloque tudo em um único repositório Git simples e apenas clone em seus mestres (ou nós, se você estiver executando sem mestre).
Esta é de longe a opção mais simples, mas significa que você terá várias cópias do mesmo módulo em seus ambientes de produção e desenvolvimento (embora você possa contornar isso com links simbólicos).
-
Tenha seu código Puppet principal em um único repositório Git, com submódulos Git apontando para seus módulos customizados. A implementação é a mesma que acima, com a adição de
--recursive
aogit clone
.A vantagem desta abordagem é que você pode facilmente fazer referência a módulos externos ( o módulo PuppetLabs Apach e para exemplo) e é relativamente fácil extrair alterações do upstream, mas você também tem a sobrecarga de ter que lidar com os submodules do Git, que são notoriamente confusos.
-
Execute o seu próprio Puppet Forge, e use Librarian-puppet ou R10K para gerenciar a instalação de seus módulos.
Isso tem a vantagem de poder controlar totalmente as versões de seus módulos via SemVer sem publicá-las publicamente - embora próprio Puppet Forge ainda é considerado "de ponta" por alguns.