天天看点

《Puppet实战手册》——2.5 使用标准的命名约定

本节书摘来自异步社区《puppet实战手册》一书中的第2章,第2.5节,作者:【英】john arundel著,更多章节内容可以访问云栖社区“异步社区”公众号查看

为模块和类选择合适的和翔实的名称将为维护代码提供很大的帮助。如果其他人需要阅读和使用你的配置清单,更是如此。

操作步骤

下面是关于如何在配置清单中进行命名的一些技巧。

1. 以所管理的软件或服务为模块命名,如apache或haproxy。

2. 以提供的功能或服务为模块中的类命名,如apache::vhosts或rails::dependencies。

3. 如果模块中的一个类是为了禁用该模块提供的服务,可将其命名为disabled。例如,一个禁用apache的类应该名为apache::disabled。

4. 如果一个节点提供多个服务,需要在节点定义中为每个服务包含一个模块或类,如下:

5. 用于管理用户的模块应命名为user。

6. 在user模块中,可在user::virtual类中声明虚拟用户(更多关于虚拟用户和其他资源,参见5.2节)。

7. 在user模块中,用于特定用户组的子类应以组命名,如user::sysadmins或者user::contractors。

8. 如果需要为某些特定节点或服务重写一个类(配置),可以把子类的名字作为前缀来继承那个类。例如,如果cartman节点(服务器)需要一个特殊的ssh配置,并且希望覆盖的之前的ssh类,可按如下所示进行操作。

9. 当使用puppet为不同的服务部署配置文件时,应该以该服务为名命名配置文件,通过使用的后缀来表明它是什么样的文件,具体示例如下。

apache初始化脚本:apache.init。

rails的logrotate配置片段: rails.logrotate。

mywizzoapp的nginx vhost文件:mywizzoapp.vhost.nginx。

独立服务器的mysql配置:standalone.mysql。

10.如果需要根据操作系统的不同发行版部署一个文件的不同版本,那么可以使用一个类似这样的命名约定。

11.可以通过下面的方式让puppet自动选择合适的版本:

12.如果需要管理不同版本的ruby,根据它(puppet类)管理的ruby版本号为类命名是比较适合的,如ruby192或ruby186。

更多参考

puppet社区维护着一套关于如何建设好puppet基础设施的最佳实践准则,其中包括关于命名规范的一些提示:<code>http://docs.puppetlabs.com/guides/best_practices.html</code>。

有些人更喜欢用逗号分隔列表的方式在一个节点上包含多个类,而不是使用单独的include语句,如下:

这和风格有一些关系,但笔者更喜欢使用单独的include语句,一行一个,因为它可以更容易地在节点(服务器)之间复制和移动类中包含的内容,而不必每次整理逗号和缩进。

本书在前面一系列例子中提到过继承,如果不知道继承是什么,不用担心,下一章会详细交代。

继续阅读