如何使用 Puppet 从源代码安装软件包?

如何使用 Puppet 从源代码安装软件包?

我想安装尚无二进制包(deb、rpm)的源代码包。

如果模块已经安装在该机器上,如何停止该模块的执行?

我在用着:

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

但是其他所有块都会被执行。最好的方法是什么?检查多个文件是否存在?当 puppet 检查更改时,我不想解压并重新编译所有模块。

编辑:

安装过程包括几个步骤:

  1. 获取tar.gz
  2. 解压软件包
  3. 创建几个配置文件
  4. 创建服务
  5. 确保服务正在运行

答案1

在尝试了几个死胡同并根据@Mike Renfro 的评论后,我想出了以下步骤(请随意改进):

  1. 不要使用 Puppet 从源代码安装软件包(这会花费太长时间并带来太多问题)

  2. 始终创建二进制包。它可以轻松地重新分发和测试。

  3. 设置你自己的存储库 - 对于 Debian 来说,一个不错的选择是复制版,文档似乎很糟糕,但是有一个用于安装的 Puppet 模块:puppet-reprepro. 添加新包非常容易:

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

  4. 使用以下方式创建新包平均流量。构建包的过程出奇的简单,比用 Puppet 脚本编写要容易得多。

  5. 安装软件包很简单:

    package { "leiningen": ensure => present }

  6. 您可以简单地获取仍处于测试版本的软件包并使用本地存储库进行部署。

  7. 使用希拉对于特定于机器的配置,清单中应该仅包含针对某些任务的通常可重复使用的模板(例如 Web 服务器、数据库服务器等)

相关内容