Gerenciando módulos de fantoches com git

5

Eu tenho um servidor de marionetes / contramestre rodando no Debian 7 para gerenciar meus sistemas. Eu uso a versão 3.7 da comunidade do fantoche e do contramestre 1.6.0. Eu uso ambientes de diretório.

No momento eu uso um fluxo de trabalho bastante complicado para meus próprios módulos escritos de criá-los em meu ambiente de desenvolvimento, que é controlado por subversão, exportando-os para um diretório externo, construindo um módulo de fantoches deles. .) e instalando isso na produção. Eu considerava ramificar / marcá-los para a produção com subversão, mas descartei isso por motivos que não consigo lembrar.

Enquanto isso eu aprendi um pequeno git e prefiro usar o git em vez de subversão para isso. Minha pergunta é agora se existem melhores práticas para fazer isso? Eu posso imaginar pelo menos duas abordagens que ambos têm seus prós e contras. Um seria colocar o desenvolvimento do ambiente sob controle de versão e, em seguida, clonar / ramificar isso para produção. Segundo, seria fazer um repositório de gits de cada módulo e cloná-los nos ambientes.

Como eu disse, sou novo no git, então não tenho uma idéia real dos pontos strongs e fracos dele. Também estou usando apenas fantoche e capataz por cerca de 8 meses.

Felicidades, Christoph

    
por Christoph 22.10.2014 / 12:05

1 resposta

6

A resposta realmente depende de como você quer que a versão seja controlada. Existem algumas abordagens principais:

  1. 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).

  1. 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 ao git 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.

  1. 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.

por 22.10.2014 / 12:50