如何从人偶运行Shell脚本?


8

我需要安装使用新手来npm完成的安装,我对应该如何做感到有些困惑。curl http://npmjs.org/install.sh | shpuppet

我很清楚创建一个package {}调用exec目标的条目,但是当我npm从源代码安装时,这不会削减它。

显然,我不想npm每次都进行构建puppet,因此我需要某种方式来检查它是否已安装,因此仅制作一个exec {}也是不够的。

我能做什么?

Answers:


15

就像是

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

应该做到的。

但是,我强烈建议您不要这样做,因为它会使您的安装过程依赖于许多其他事情才能正常工作,并且会将未跟踪的文件“知道谁”知道在文件系统中的位置(甚至在我们开始讨论以下内容的安全隐患之前)自动运行不受信任和不可验证的代码)。您最好为OS制作一个本机软件包,将其放在本地存储库中,然后使用软件包资源进行安装。


4

我会“绕过” Womble所说的关于打包和通过本地存储库中的程序包管理工具进行安装的所有内容。根据平台的不同,您可能还会使用可靠的第三方存储库。

关于Womble答案的一个小问题:木偶风格指南建议使用单引号,除非变量插值需要双引号。在Womble显示的代码中,没有变量,因此所有的“应该是'。

请注意,很多人偶文档尚未更新以反映此建议,因此即使在官方文档中,您也会在很多地方看到双引号。样式指南和puppet-lint都反映了当前推荐的最佳实践,并且有望最终修复文档。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.