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

    xiaoxiao2024-04-21  11

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

    2.5 使用标准的命名约定

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

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

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

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

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

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

    node 'server014' inherits 'server' {  include puppet::server  include mail::server  include repo::gem  include repo::apt  include zabbix }

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

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

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

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

    class cartman_ssh inherits ssh {  [ override config here ] }

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

    Apache初始化脚本:apache.init。Rails的Logrotate配置片段: rails.logrotate。mywizzoapp的Nginx vhost文件:mywizzoapp.vhost.nginx。独立服务器的MySQL配置:standalone.mysql。10.如果需要根据操作系统的不同发行版部署一个文件的不同版本,那么可以使用一个类似这样的命名约定。

    memcached.lucid.conf memcached.precise.conf

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

    source = > "puppet:///modules/memcached  /memcached.${::lsbdistrelease}.conf",

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

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

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

    node 'server014' inherits 'server' {  include mail::server, repo::gem, repo::apt, zabbix }

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

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

    相关资源:Puppet实战.pdf 中文完整版
    最新回复(0)