librarian-puppet
é a resposta mais fácil para isso. Pessoalmente, eu sempre aconselho fazer o trabalho antecipado e implementar uma solução escalonável primeiro, em vez de revisar constantemente sua abordagem.
Funciona com o mesmo princípio que bundler
faz para as gemas do Ruby - basta criar um Puppetfile
que lista os módulos que você deseja (ou seja, sem dependências).
Quando você executar librarian-puppet install
pela primeira vez em sua máquina de desenvolvimento Puppet (geralmente sua estação de trabalho local), ele interrogará todos os módulos e criará uma lista de dependências automaticamente (se os módulos em questão usarem o arquivo metadata.json
em detalhes dependências). Ele também criará Puppetfile.lock
para registrar as versões exatas escolhidas para cada módulo e suas dependências.
Para alterações subsequentes, você pode executar librarian-puppet update <module>
para atualizar um módulo específico para a versão mais recente. Isso irá recalcular as dependências e atualizar Puppetfile.lock
.
Uma anotação importante - librarian-puppet
terá o controle completo de seu diretório modules
, portanto, todos os módulos personalizados que você escreveu precisarão ser extraídos e referenciados como módulos por direito próprio. seu Puppetfile
.
A implantação é tão simples quanto a execução de librarian-puppet install
em seus nós - isso analisará o Puppetfile.lock
(não o Puppetfile
) e instalará todos os seus módulos.