我想安装还没有二进制包(deb、rpm)的源代码包。
如果该模块已安装在该机器上,我该如何停止执行该模块?
我在用着:
Exec {
creates => "${zookeeper_path}/zookeeper/bin/zkServer.sh"
}
然而,所有其他块无论如何都会执行。什么是最好的方法?检查几个文件是否存在?我不想在 puppet 检查更改时解压并重新编译所有模块。
编辑:
安装过程包括几个步骤:
- 取
tar.gz
包 - 解压包
- 创建几个配置文件
- 创建服务
- 确保服务正在运行
在尝试了几个死胡同和@Mike Renfro 的评论后,我想出了以下步骤(随意改进它):
不要使用 Puppet 从源代码安装包(它花费的时间太长,带来的问题太多)
始终创建二进制包。它可以很容易地重新分发和测试。
设置您自己的存储库 - 对于 Debian,一个不错的选择是reprepro,文档似乎很糟糕,但是有一个用于安装的 Puppet 模块:puppet-reprepro。添加新包非常简单:
$ reprepro -Vb . includedeb squeeze ~/packages/my_package.deb
使用fpm创建新包。构建包的过程非常简单,并且比用 Puppet 脚本编写要容易得多。
只需使用以下命令安装软件包:
package { "leiningen": ensure => present }
您可以简单地获取仍在测试版本中的包,将其部署到本地存储库。