Como instalar pacotes do código fonte com o Puppet?

1

Gostaria de instalar pacotes de código-fonte que ainda não possuam pacotes binários (deb, rpm).

Como interrompo a execução de um módulo caso o módulo já esteja instalado nessa máquina?

Estou usando:

  Exec {
    creates => "${zookeeper_path}/zookeeper/bin/zkServer.sh"
  }

no entanto, todos os outros blocos são executados de qualquer maneira. Qual é a melhor maneira? Verificando a existência de vários arquivos? Eu não quero descompactar e recompilar todos os módulos quando os fantoches verificam mudanças.

EDITAR:

O processo de instalação consiste em várias etapas:

  1. buscar tar.gz package
  2. pacote untar
  3. crie vários arquivos de configuração
  4. criar serviço
  5. garante que o serviço esteja em execução
por Tombart 16.03.2013 / 22:36

1 resposta

4

Depois de tentar alguns becos sem saída e de comentários do @Mike Renfro, desenvolvi os seguintes passos (sinta-se à vontade para melhorá-lo):

  1. Não instale pacotes do código-fonte com o Puppet (demora muito e traz muitos problemas)

  2. Sempre crie pacotes binários. Pode ser facilmente redistribuído e testado.

  3. Configure seu próprio repositório - para o Debian, uma boa escolha é reprepro , a documentação parece ser horrível, mas há uma marionete módulo para instalação: puppet-reprepro . Adicionar novo pacote é muito fácil:

    $ reprepro -Vb . includedeb squeeze ~/packages/my_package.deb

  4. Crie novos pacotes com fpm . O processo de construção de um pacote é surpreendentemente simples e muito mais fácil do que escrevê-lo no roteiro de fantoches.

  5. Instale os pacotes simplesmente com:

    package { "leiningen": ensure => present }

  6. Você pode simplesmente obter pacotes que ainda estão na versão de teste e implantá-los com seu repositório local.

  7. Use hiera para configuração específica da máquina, em manifestos devem ser apenas modelos geralmente reutilizáveis para determinadas tarefas (como web-server, db-server, etc.)
por 21.04.2013 / 13:59