Como executo um script de shell do fantoche?

8

Eu preciso instalar npm , que é feito por curl http://npmjs.org/install.sh | sh e, sendo novato em usar puppet , estou um pouco confuso sobre como isso deve ser feito.

Estou bem ciente da criação de uma entrada package {} que invoca uma meta exec , mas quando eu instalar npm da origem, isso não vai ser suficiente.

Eu claramente não quero construir npm toda vez que meu puppet fizer um pull, então eu preciso de alguma forma verificar se ele está instalado ou não, então apenas fazer um exec {} não é o suficiente.

O que posso fazer?

    
por Industrial 17.03.2012 / 14:51

2 respostas

15

Algo como

exec { "install npm":
    command => "/usr/bin/curl http://npmjs.org/install.sh | sh",
    creates => "/some/directory/somewhere"
}

Deve fazer o truque.

No entanto, eu aconselho strongmente a não fazê-lo, pois ele torna o processo de instalação dependente de tantas outras coisas que funcionam corretamente e descarta arquivos não rastreados que sabem onde estão no seu sistema de arquivos (e isso mesmo antes de começarmos a falar sobre as implicações de segurança da execução automática de código não confiável e não verificável). Seria muito melhor criar um pacote nativo para o seu sistema operacional, colocando-o em um repositório local e instalando-o usando um recurso de pacote.

    
por 17.03.2012 / 14:56
4

Eu iria "secundar" tudo o que o Womble disse sobre empacotá-lo e instalá-lo via ferramentas de gerenciamento de pacotes de um repositório local. Dependendo da plataforma, também pode haver repositórios de terceiros confiáveis que você possa usar.

Um pequeno detalhe sobre a resposta da Womble: o guia de estilo de marionetes recomenda o uso de aspas simples, a menos que você precise de aspas duplas para interpolação variável. No código que Womble mostra, não há variáveis, então todo o "deveria ser '.

Note que grande parte da documentação do fantoche não foi atualizada para refletir essa recomendação, então você verá aspas duplas em muitos lugares, mesmo nos documentos oficiais. O guia de estilo e puppet-lint refletem as práticas recomendadas recomendadas, e espera-se que os documentos sejam corrigidos.

    
por 03.04.2012 / 22:59