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

    xiaoxiao2024-05-14  102

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

    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。在下一节,读者将看到如何使用这个工具。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)