使用 Puppet 社区规范
A society made up of individuals who were all capable of original thought would probably be unendurable.
— H. L. Mencken
“随大溜” 有时会是个好主意。如果其他人需要阅读或管理你的配置清单, 或者如果你想要分享代码到社区, 那么尽可能遵循现有的样式约定会是个好主意。
操作步骤
将你的资源名用双引号括起来;例如使用 package { "exim4": 而不是 package { exim4:
当使用一些像连字符和空格这样的字符时很容易引起 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, }
很多时候,当你编辑文件时会追加一个额外的参数, 而忘记在原来最后一行的末尾添加必要的逗号!
当声明仅有一个参数的资源时,将声明放在一行上且无需使用结尾的逗号:
package { "puppet": ensure => installed }
当声明有多个参数的资源时,每个参数占一行:
package { "rake": ensure => installed, provider => gem, require => Package["rubygems"], }
当声明 符号链接(symlinks)时,使用 ensure => link:
file { "/etc/php5/cli/php.ini": ensure => link, target => "/etc/php.ini", }
为了使代码便于阅读,所有的箭头以最长一个参数对齐,例如:
file { "/var/www/${app}/shared/config/rvmrc": owner => "deploy", group => "deploy", content => template("rails/rvmrc"), require => File["/var/www/${app}/shared/config"], }
每个资源中的箭头(=>)都要对齐,而不是每个文件中的箭头都对齐; 否则会在不同文件之间复制代码时带来麻烦。
更多用法
Puppet Labs 网站上维护着 Puppet 社区规范指南文档: http://docs.puppetlabs.com/guides/style_guide.html 。
Tim Sharpe 写了一个 puppet-lint 工具, 你可以用它检查你的配置清单是否符合规范。 运行 gem install puppet-lint 安装它,详细的信息请参考 https://github.com/rodjek/puppet-lint 。