Obtendo o fantoche para instalar os módulos

2

Na minha configuração atual eu tenho um script de host que leva uma VM recém-provisionada em um DC em algum lugar, emite os comandos couple que eu preciso para executar puppet apply (certifique-se de que hostname está definido, que puppet está instalado, ele pode ver sua configuração de fantoches). Então, puppet apply cuida do resto (mais o tecido para implantar nosso software).

Tudo bem, mas instalar os módulos de fantoches necessários atualmente acontece no meu script de hospedagem. Isso funciona perfeitamente até que eu queira instalar novos módulos, e então eu tenho que classificar isso manualmente em hosts existentes. Parece que o fantoche deveria ser capaz de fazer isso, mas não encontrei a diretiva correta.

# If only this worked...
module { 'maestrodev-rvm':
    ensure => present
}

Eu já vi bibliotecária de marionetes , mas parece adicionar mais complexidade do que resolve para o pequeno número de módulos que nós instalar. Parece uma solução para mais tarde, se / quando precisarmos de algo mais complexo.

Estou sentindo falta de algo?

    
por jma 26.02.2016 / 11:49

1 resposta

3

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.

    
por 26.02.2016 / 12:06

Tags