Como executo um script de shell do fantoche?


8

Preciso instalar o npmque é feito curl http://npmjs.org/install.sh | she, sendo novo no uso puppet, estou um pouco confuso sobre como isso deve ser feito.

Estou ciente de criar uma package {}entrada que chama um execdestino, mas, como instalo a npmpartir do código-fonte, isso não é suficiente.

Claramente, eu não quero construir npmtoda vez que eu puppetfizer um puxão, então preciso de alguma maneira verificar se ele está instalado ou não, então apenas fazer um exec {}sozinho também não é suficiente.

O que eu posso fazer?

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, gostaria fortemente aconselhar contra fazer isso, uma vez que torna o processo de instalação depende de tantas outras coisas funcionando corretamente, e cai arquivos untracked sabe-se lá onde, em seu sistema de arquivos (e isso é mesmo antes de começar a falar sobre as implicações de segurança executando código não confiável e não verificável automaticamente). Você seria muito melhor criando um pacote nativo para o seu sistema operacional, colocando-o em um repositório local e instalando-o usando um recurso de pacote.


4

Eu "secundaria" tudo o que Womble disse sobre empacotá-lo e instalá-lo por meio de 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ê pode usar.

Um pequeno detalhe sobre a resposta de 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 o Womble mostra, não há variáveis; portanto, todos os "deveriam ser".

Observe que grande parte da documentação das marionetes não foi atualizada para refletir esta recomendação; portanto, você verá aspas duplas em muitos lugares, mesmo nos documentos oficiais. O guia de estilo e os fiapos de marionetes refletem as melhores práticas recomendadas atuais, e esperamos que os documentos sejam corrigidos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.