本节书摘来自异步社区《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::serverinclude mail::serverinclude repo::geminclude repo::aptinclude 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实战手册》——2.5 使用标准的命名约定相关推荐

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

    本节书摘来自异步社区<Puppet实战手册>一书中的第1章,第1.4节,作者:[英]John Arundel著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1. ...

  2. 《Puppet实战手册》——导读

    ** 前言 ** IT运维领域正在进行一场革命.新一代的配置管理工具可以在几秒内完成大量服务器的构建(配置)和整个网络自动化.为了充分利用云计算的强大功能,并且建立可靠.可扩展.安全.高性能的系统,拥 ...

  3. Java 7并发编程实战手册

    2019独角兽企业重金招聘Python工程师标准>>> Java 7并发编程实战手册 本书是 Java 7 并发编程的实战指南,介绍了Java 7 并发API 中大部分重要而有用的机 ...

  4. 《D3.js数据可视化实战手册》—— 1.1 简介

    本节书摘来异步社区<D3.js数据可视化实战手册>一书中的第1章,第1.1节,作者: [加拿大]Nick Qi Zhu,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  5. openstack mysql配置_《OpenStack云计算实战手册(第2版)》一2.3 用MySQL配置OpenStack镜像服务-阿里云开发者社区...

    本节书摘来异步社区<OpenStack云计算实战手册(第2版)>一书中的第2章,第2.3节,作者: [英]Kevin Jackson , [美]Cody Bunch 译者: 黄凯 , 杜玉 ...

  6. docker pdf 中文版 linux,Docker入门实战手册PDF

    一.为什么要使用 Docker? 1 .快速交付应用程序 •  开发者使用一个标准的image 来构建开发容器,开发完成之后,系统管理员就可以使用这个容器 来部署代码 •  Docker 可以快速创建 ...

  7. JavaScript实战手册(涵盖丰富的JQuery应用实例)

    <JavaScript实战手册> [作者]David Sawyer McFarland 著 [译者]李强 等译 [书号]978-7-111-25867-4 [定价]89.00元 [本书中的 ...

  8. 从蚂蚁金服裸辞,京东三面遭调优猛击,闭关俩月啃完653页性能调优实战手册,拿到京东offer

    性能优化是很多 Java 程序员希望彻底掌握的一门技能.很多人都想学好性能优化,希望能够在自己的工作中灵活运用提高性能,从而为用户提供良好的用户体验.然而,很多人在设计技术方案或者编码时缺乏系统地.方 ...

  9. CSDN首发丨TBSchedule应用实战手册

    作者:鲁江(TBSchedule技术交流微信订阅号ID:tbschedule),1989年8月17日生,2010年毕业后供职于<北京京东科技有限公司>.参与工作消息中间件,报表中心,推荐系 ...

最新文章

  1. ERPLAB中文教程:ERPLAB安装与添加通道
  2. python手机版怎么用-你知道如何用手机编程Python吗?
  3. [Effective JavaScript 笔记]第59条:避免过度的强制转换
  4. Git内部原理之深入解析Git对象
  5. shell之常用工具的使用
  6. SAP UI5 sap.m.ListMode - ModesingleSelectMaster
  7. 使用FizzBu​​zz和JUnitParams进行单元测试
  8. Joi验证模块的使用
  9. java第一次课必修实验答案,Java第一次实验报告
  10. char数组拷贝wchar数组
  11. 提取全局应用程序集中的dll
  12. html快闪软件制作,阿勇pr:如何使用pr快闪模板快速制作出快闪视频
  13. 张朝阳建议年轻人不要努力过头,要现实点,网友:不拼搞不好就被裁了
  14. win10设置计算机关机时间,win10系统怎样设置定时关机 win10有定时关机设置吗
  15. Python爬虫从入门到精通:(6)数据解析2_使用bs4(BeautifulSoup)_Python涛哥
  16. 一步步教你批量压缩打包文件夹
  17. 智能家居-电热水器工作原理(转载)
  18. 分布式期货行情交易系统-行情及交易模块分析
  19. 郭炜-C语言程序设计-程序设计与算法(一)-第五周
  20. 稳压二极管稳压电路如何设计

热门文章

  1. 计算机文化基础第二次答案,中国石油大学2020年秋计算机文化基础第二次在线作业答案...
  2. 计算机一级插入页眉,2017年计算机一级WPS辅导:WPS中页眉页脚的设计技巧
  3. 理解 Symbol.toStringTag 用法
  4. Web Worker 你知道吗?
  5. vfp生成菜单时文件不存在_如何在VFP项目中创建菜单
  6. java初始块,java初始代码块
  7. java中三种方法_Java文件I/O的三种方法
  8. c语言bmp转换jpeg_PDF格式转换工具
  9. java ssdb查询_java连接ssdb数据库
  10. mysql 调用存储过程 inout_MySQL存储过程in、out和inout参数示例和总结