使用公共模块
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 文件,查看这个模块是否支持你的操作系统。
准备工作
使用 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...
运行 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 应用程序服务器的模块。
查找合适的模块:
# puppet-module search tomcat ===================================== Searching http://forge.puppetlabs.com ------------------------------------- 2 found. -------- camptocamp/tomcat (0.0.1) jeffmccune/tomcat (1.0.1)
在本例中,我们将安装 Jeff McCune 版本的 tomcat 模块:
# cd /etc/puppet/modules # puppet-module install jeffmccune/tomcat Installed "jeffmccune-tomcat-1.0.1" into directory: jeffmccune-tomcat
现在就可以在你的配置清单中使用这个模块了:查看其源代码将向你展示这是如何实现的。
工作原理
puppet-module 工具使用简单地自动化过程从 Puppet Forge 站点搜索和下载模块。 你也可以浏览该网站查询可用的模块: http://forge.puppetlabs.com/ 。
更多用法
并非所有公开可用的模块都保存在 Puppet Forge 上。其他的存放位置是在 GitHub 上:
Dean Wilson 在他的 Puppet Cookbook 站点: http://puppetcookbook.com/ 维护了一个优秀的 Puppet 的仓库,还包括一些技巧和处方。