使用公共模块

Plagiarize, plagiarize, plagiarize / Only be sure always to call it, please research.

Lobachevsky — Tom Lehrer

如果你对自己编制的代码有疑问,使用他人的吧。在许多情况下, 当你要写一个 Puppet 模块来管理一些软件或服务时,不必从头开始编写。 对许多流行的应用程序,在 Puppet Forge 站点上都提供了社区贡献的模块。 有时,一个社区模块正是你所需要的,你可以下载并马上开始使用它。 若社区提供的模块不能满足你的需求,你可以对其进行一些修改,以适应你的特定需求和环境。

如果你是个 Puppet 的新手,能从一些现有的代码开始对你将是一个很大的帮助。但另一方面, 社区模块往往编写得尽可能通用和便携,为了实现此目的所需的额外代码可能使其更难理解。

一般地,在你未阅读和理解 Puppet Forge 提供的模块代码之前, 我建议你不要将其作为 ‘活动的(drop-in)’ 模块源来部署。 Puppet Forge 提供的模块为你的 Puppet 基础设施引入了一个外部的依赖, 但它并不能帮你提升对 Puppet 的理解也不利于提升你使用 Puppet 的经验。 相反,我会用它作为一个获取灵感的源泉,从这方面讲它还是很有帮助的。 从 Puppet Forge 获取的模块应该是一个起点,你可以用它作为基础,制定和完善自己的模块。

要知道,一个给定的模块可能无法在你的 Linux 发行上工作。请检查模块自带的 README 文件,查看这个模块是否支持你的操作系统。

准备工作

  1. 使用 Puppet Forge 模块的最简单方法是安装 puppet-module 工具:

    # gem install puppet-module
    Fetching: puppet-module-0.3.2.gem (100%)
    ******************************************************************
    
    Thank you for installing puppet-module from Puppet Labs!
    * Usage instructions: read "README.markdown" or run `puppetmodule
      usage`
    * Changelog: read "CHANGES.markdown" or run `puppet-module
      changelog`
    * Puppet Forge: visit http://forge.puppetlabs.com/
    
    ******************************************************************
    
    Successfully installed puppet-module-0.3.2
    1 gem installed
    Installing ri documentation for puppet-module-0.3.2...
    Installing RDoc documentation for puppet-module-0.3.2...
    
  2. 运行 puppet-module 查看其可用的任务:

    # puppet-module
    Tasks:
      puppet-module build [PATH_TO_MODULE]
        # Build amodule for release
      puppet-module changelog
        # Display the changelog for this tool
      puppet-module changes [PATH_TO_MODULE]
        # Show modified files in an installed m...
      puppet-module clean
        # Clears module cache for all repositories
      puppet-module generate USERNAME-MODNAME
        # Generate boilerplate for a new module
      puppet-module help [TASK]
        # Describe available tasks or one speci...
      puppet-module install MODULE_NAME_OR_FILE [OPTIONS]
        # Install a module (eg, 'user-modname')...
      puppet-module repository
        # Show currently configured repository
      puppet-module search TERM
        # Search the module repository for a mo...
      puppet-module usage
        # Display detailed usage documentation ...
      puppet-module version
        # Show the version information for this...
    
    Options:
      -c, [--config=CONFIG] # Configuration file
                            # Default: /etc/puppet/puppet.conf
    

操作步骤

在本例中,我们将使用 puppet-module 查找并安装一个管理 Tomcat 应用程序服务器的模块。

  1. 查找合适的模块:

    # puppet-module search tomcat
    =====================================
    Searching http://forge.puppetlabs.com
    -------------------------------------
    2 found.
    --------
    camptocamp/tomcat (0.0.1)
    jeffmccune/tomcat (1.0.1)
    
  2. 在本例中,我们将安装 Jeff McCune 版本的 tomcat 模块:

    # cd /etc/puppet/modules
    # puppet-module install jeffmccune/tomcat
    Installed "jeffmccune-tomcat-1.0.1" into directory:
    jeffmccune-tomcat
    
  3. 现在就可以在你的配置清单中使用这个模块了:查看其源代码将向你展示这是如何实现的。

工作原理

puppet-module 工具使用简单地自动化过程从 Puppet Forge 站点搜索和下载模块。 你也可以浏览该网站查询可用的模块: http://forge.puppetlabs.com/

更多用法

并非所有公开可用的模块都保存在 Puppet Forge 上。其他的存放位置是在 GitHub 上:

Dean Wilson 在他的 Puppet Cookbook 站点: http://puppetcookbook.com/ 维护了一个优秀的 Puppet 的仓库,还包括一些技巧和处方。