《Puppet实战手册》——2.2 使用社区推荐的Puppet风格

2.2 使用社区推荐的Puppet风格

如果其他人需要阅读或维护你的配置清单,或者如果读者想通过社区分享自己的代码,那么尽可能密切地按照现有风格、规范进行代码编写会是一个很好的主意。这些会在代码的布局、间距、引号、对齐方式和变量引用等方面进行约束,Puppet实验室官方在风格上的建议可以参考http://docs.puppetlabs.com/guides/style_guide

工作原理
本节会向读者展示一些更加重要的例子,以及如何确保代码是遵循风格规范的。

缩进
配置清单中使用两个空格(不要使用Tab)进行缩进,可参考下面的代码:

node 'monitoring' inherits 'server' {
 include icinga::server
 include repo::apt
}

引号
资源名字要始终使用引号注明,如下:

package { 'exim4':
而非如下所示:

package { exim4:
所有的字符串都使用单引号,除非:

字符串中引用了变量(如${name});
字符串中包含了转义序列(如n)。
在这些情况下,应该使用双引号。除非变量引用或转义序列在双引号内,否则Puppet会不处理它们。

在Puppet中要始终将非保留字的参数值用引号引起来。例如,下面的值都是非保留字:

name => 'Nucky Thompson',
mode => '0700',
owner => 'deploy',

但是,下面这些为保留字的参数值则不需要引号:

ensure => installed,
enable => true,
ensure => running,

变量
当字符串中引入变量时,要确保它们的名字被大括号({})括起来,如下:

source => "puppet:///modules/webserver/${brand}.conf",
否则,Puppet的语法分析器就不得不猜测哪些字符是变量名,哪些属于外围的字符串。而大括号能够帮助语法分析器明确这些语义。

参数
确保在声明参数的行尾加上逗号,即便在最后一个参数的行尾。

service { 'memcached':
 ensure => running,
 enable => true,
}

这种方式是Puppet允许的,并且它会在用户将来增加参数或是调整参数顺序时变得更加容易。

当声明一个仅仅带有一个参数的资源时,要把全部声明写在一行,并且不要在参数行尾添加逗号。

··package { 'puppet': ensure => installed }··
而在那些多个参数的声明代码中,需要让每一个参数各占据一行。

package { 'rake':
 ensure  => installed,
 provider => gem,
 require => Package['rubygems'],
}

为了使代码更容易阅读,所有的参数箭头要与最长参数名所在行的参数箭头对齐,如下所示:

file { "/var/www/${app}/shared/config/rvmrc":
 owner  => 'deploy',
 group  => 'deploy',
 content => template('rails/rvmrc.erb'),
 require => File["/var/www/${app}/shared/config"],
}

箭头对齐应该在每个资源内部保持一致,而不是在整个文件中,否则会使用户难以从一个文件中剪切代码粘贴到另一个文件。

符号链接
当声明的file资源是符号链接这种类型时,要设置ensure => link及target属性,如下所示:

file { '/etc/php5/cli/php.ini':
 ensure => link,
 target => '/etc/php.ini',
}

更多参考
当存在多人同时操作代码库时,很容易因为风格不一致而导致混乱。幸运的是,有一个工具可以自动检查代码是否符合风格指南,这个工具就是puppet-lint。在下一节,读者将看到如何使用这个工具。

时间: 2024-09-27 21:41:16

《Puppet实战手册》——2.2 使用社区推荐的Puppet风格的相关文章

《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章 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.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.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

《Puppet实战手册》——1.6 编写papply脚本

1.6 编写papply脚本 人们希望可以尽量简单和简单地将Puppet配置应用到主机上,因此,通常会写一个脚本,它包含puppet apply命令和所需要的参数.要部署这个脚本到需要它的地方,除了Puppet,还有什么更好的工具吗? 操作步骤具体步骤如下. 1. 在Puppet仓库目录中创建puppet模块必需的目录. ubuntu@cookbook:~/puppet$ mkdir modules ubuntu@cookbook:~/puppet$ mkdir modules/puppet u

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

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

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

2.5 使用标准的命名约定 为模块和类选择合适的和翔实的名称将为维护代码提供很大的帮助.如果其他人需要阅读和使用你的配置清单,更是如此. 操作步骤下面是关于如何在配置清单中进行命名的一些技巧. 1. 以所管理的软件或服务为模块命名,如apache或haproxy. 2. 以提供的功能或服务为模块中的类命名,如apache::vhosts或rails::dependencies. 3. 如果模块中的一个类是为了禁用该模块提供的服务,可将其命名为disabled.例如,一个禁用Apache的类应该名