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

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语句,一行一个,因为它可以更容易地在节点(服务器)之间复制和移动类中包含的内容,而不必每次整理逗号和缩进。

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

时间: 2024-11-16 11:06:33

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

《Puppet实战手册》——第2章 Puppet语言和风格 2.1简介

第2章 Puppet语言和风格 计算机语言设计就像是在公园里散步,而且是侏罗纪公园. -Larry Wall① 本章内容包括: 使用社区推荐的Puppet风格使用puppet-lint检查配置清单使用模块使用标准的命名约定/规范使用内联模板数组中多个元素的遍历编写功能强大的条件语句在if语句中使用正则表达式使用选择器和case语句使用in运算符使用正则表达式进行替换 2.1 简介 本章中讲解如何编写优雅的Puppet配置清单(Puppet用于配置服务器的程序代码被称为配置清单,以后均使用配置清单

《Puppet实战手册》——导读

** 前言 **IT运维领域正在进行一场革命.新一代的配置管理工具可以在几秒内完成大量服务器的构建(配置)和整个网络自动化.为了充分利用云计算的强大功能,并且建立可靠.可扩展.安全.高性能的系统,拥有Puppet这样的工具是必不可少的.本书不仅讲解了Puppet的基础知识,而且深入探讨了Puppet的所有强大功能,详细展示了如何解决现实中的各种问题和应用场景.每一步操作都完整地展示了需要录入的命令,并且每一个技巧都有完整的代码示例. 本书带领读者从Puppet的基本知识开始,完整.专业地讲解Pu

《Puppet实战手册》——1.8 利用Rake部署变更

1.8 利用Rake部署变更 Rake是一个基于Ruby语言编写的实用工具,它可以帮助自动化完成Puppet的工作流程.虽然有很多其他方法支持在远程服务器上运行命令,但是Rake碰巧是本书使用的方法,它很容易扩展,可以非常方便地使用它做任何事. 此处要让Rake为做的第一件事情是:登录到远程服务器上,运行pull-updates脚本,将新修改的Puppet配置清单应用到该服务器上.做起来非常简单,下面来看看它是如何实现的. 准备工作 你可能已经安装了Rake(尝试运行rake命令进行检查),如果

《Puppet实战手册》——第1章 Puppet基础设施 1.1 简介

第1章 Puppet基础设施 未来计算机可能只有1000个真空管,而且只有1.5吨重. --<大众机械>(Popular Mechanics),1949 本章内容包括: 安装Puppet创建一个配置清单利用Git管理配置清单创建去中心化Puppet架构编写papply脚本使用cron运行Puppet利用Rake部署变更利用Rake引导Puppet运行利用Git钩子自动进行语法检查 1.1 简介 本书包含一些代表着Puppet社区认同的最佳实践的实例,一些可以帮助读者在工作中更容易使用Puppe

《Puppet实战手册》——2.4 使用模块

2.4 使用模块 能够使Puppet配置清单清晰并且易于维护的最重要的方式之一就是将它们组织成模块. 模块是将相关的事物进行组合的一种简单方式.例如,一个webserver模块应该包括让一台机器作为Web服务器所必需的一切:Apache的配置文件.虚拟主机模板和一些必要的用来部署它们(Apache的配置文件.虚拟主机模板)的Puppet代码. 把代码拆分成不同的模块可以使它们更易于复用和共享,这也是组织配置清单的最合理的方式.下例将创建一个模块来管理memcached(一款在Web应用程序中非常

《Puppet实战手册》——1.4 利用Git管理配置清单

1.4 利用Git管理配置清单 把Puppet配置清单存放在版本控制系统Git或Subversion中管理(推荐Git),所有Puppet管理的机器都从仓库取出配置,这是一个非常好的想法.它有以下几个优点. 可以取消对配置清单的更改并回滚至以前任意一个版本. 可以使用新的分支(branch)来测试新功能. 如果有多人需要修改配置清单,可以分别独立在自己的工作副本上进行,然后再合并所有的修改. 可以使用git log功能查看谁在什么时候做了什么修改. 准备工作 本节将导入现有的清单文件到Git仓库

《Puppet实战手册》——1.9 利用Rake引导Puppet运行

1.9 利用Rake引导Puppet运行 如果希望让新的服务器成为Puppet基础设施的一部分,只需要在服务器上面运行几条命令就可以实现,但现在通过为Rakefile添加新引导任务的方式使这一过程更加简单. 准备工作 参考如下步骤,为这个方面做一些准备. 1. 将下面这行添加至Rakefile文件顶部. REPO = 'git@github.com:bitfield/cookbook.git' 2. 将下面的任务添加至Rakefile文件的任意位置. desc "Bootstrap Puppet

《Puppet实战手册》——1.7 使用cron运行Puppet

1.7 使用cron运行Puppet 通过已有的配置,已经可以做很多事情,包括在团队中管理Puppet清单,通过GitHub同步变更,使用papply脚本在机器上手动应用配置变更. 然而,截至目前还是需要手动登录到每台机器上更新Git仓库并重新运行Puppet.如果每台机器可以自动更新并应用变更,就更方便了.这样,只需要将修改推送至仓库,所有机器就会在一定时间范围内自动完成配置的变更. 做到这一点最简单的方法就是使用cron作业,定期从仓库更新配置文件并在有变更时运行Puppet. 准备工作 首

《Puppet实战手册》——1.5 创建去中心化Puppet架构

1.5 创建去中心化Puppet架构 有些系统分散管理时会工作得更好. 使用Puppet最常见的方法就是运行一台Puppet Master服务器,Puppet客户端连接到Puppet Master并接收各自的配置清单.然而,Puppet Master并不是必需的,可以直接在配置清单文件上运行puppet apply命令来应用变更. ubuntu@cookbook:~/puppet$ puppet apply manifests/site.pp Notice: Finished catalog r