📜  puppet编码样式(1)

📅  最后修改于: 2023-12-03 15:03:53.444000             🧑  作者: Mango

Puppet 编码样式

当您开始使用 Puppet 写配置时,了解一些编码样式和最佳实践将非常有帮助。这篇文章包含一些建议和示例代码,旨在帮助您编写更好的 Puppet 代码。

代码格式化

良好的代码格式化使得代码可读性更强,更易于理解和维护。下面是一些建议的代码格式化规则:

缩进

缩进应该是两个空格。不要使用制表符或四个空格。

换行

在语句结束时进行换行,例如:

file { '/etc/passwd':
  ensure => 'present',
  owner  => 'root',
  group  => 'root',
  mode   => '0644',
}
括号

在括号周围留有空格,例如:

if $enabled {
  ...
}
注释

注释是非常有用的,它们可以帮助其他程序员理解您的代码,并阐述您的意图。在 Puppet 中,注释应该以 # 开头。

命名

在编写 Puppet 代码时,请遵循以下命名规则:

  • 使用小写字母和下划线(_);
  • 类和定义的名称应该使用 CamelCase(例如,class FooBar);
  • 变量和参数应使用 snake_case(例如,$foo_bar);
  • 如果您使用不属于 Puppet 类型系统的数据类型,则应将其名称设置为大写字母开头的名称,以与 Puppet 类型区分开来(例如,MyCustomDataType)。
可维护性

Puppet 的一个主要优势是其可维护性。您可以使用以下技术使得您的 Puppet 代码更易于维护:

DRY 原则

不要重复自己(DRY)原则是软件开发中的一个基本原则。在编写 Puppet 代码时,请尽可能减少重复。

例如,如果您在多个地方使用相同的资源类型,请将它们抽象为模块或定义。

尽量少使用条件语句

过多使用条件语句会使得代码难以阅读和维护。请尝试使用参数化和定义以减少条件语句的数量。

避免使用内部资源引用

内部资源引用增加了代码的复杂度,使得代码更难以阅读和维护。请尝试使用参数化和同一模块中的资源引用来避免内部资源引用。

# 错误的示范
file { '/etc/foo.bar':
  ensure => present,
  notify => Service['foo'],
}
service { 'foo':
  ensure => running,
}

# 正确的示范
class mymodule::foo {
  File { 'foo.bar':
    ensure => present,
  }

  file { '/etc/foo.bar':
    notify => Service['mymodule::foo_service'],
  }

  service { 'mymodule::foo_service':
    ensure => running,
  }
}
示例代码

下面是一些良好的样式示例代码:

对文件进行 checksum 校验

当您需要对文件进行校验时,请使用 checksum 参数:

file { '/etc/foo.conf':
  ensure   => 'file',
  source   => "puppet:///modules/${module_name}/foo.conf",
  checksum => 'md5lite',
}
使用 Hiera 数据

当您需要使用 Hiera 中的值时,请使用 hiera 函数:

$foo_value = hiera('foo_value')
配置服务

当您需要配置服务时,请确保在资源类型中正确地设置了 requirenotify 参数:

class mymodule::foo {
  class { 'mymodule::bar':
    require => Class['mymodule::baz'],
  }

  class { 'mymodule::baz':
    notify => Service['mymodule::foo_service'],
  }

  service { 'mymodule::foo_service':
    ensure => running,
  }
}
调用提供的类或定义

当您在调用提供的类或定义时,请始终使用小括号:

include mymodule::foo
mymodule::bar { 'baz':
  some_param => 'value',
}
总结

编写棒极了的 Puppet 代码需要一些技巧和经验,但通过遵循上述建议和最佳实践,您应该能够编写漂亮、可读性好、可维护性强的 Puppet 代码。

Happy Hacking!