Puppet 编码风格

在 Puppet 中,编码风格描述了尝试将系统配置上的基础设施转换为代码时必须遵循的所有要求。 Puppet 需要资源来工作和执行其所有定义的任务。

正如我们所知,Puppet 使用 Ruby 语言作为它的编码语言,提供了几个预定义的特性,借助这些特性,代码上的简单配置就很容易完成。

基础单元

Puppet使用了许多易于理解和使用的基本编码样式。让我们看看其中的一些:

资源

In puppet , 资源是用于系统配置建模的基本单位。

资源是木偶的构建块。每个资源都描述了系统某些方面所需的状态,例如服务、文件和包。

资源是预定义的功能,允许用户或开发人员开发自定义资源,借助这些功能我们可以管理系统的任何特定单元。

Puppet中的资源通过使用"定义"或"类"聚合在一起。此功能有助于组织模块。

每个资源声明至少包含一个资源类型、一个标题和一组属性。

语法:

<TYPE> { '<TITLE>': 
<ATTRIBUTE> => <VALUE>, }

让我们看一个示例资源,其中定义了标题和属性列表。每个资源都包含一个默认值,可以根据我们的要求覆盖该值。

file {  
   '/etc/passwd': 
   owner => superuser, 
   group => superuser, 
   mode => 644, 
}

以上命令指定了特定文件的权限。

每次在任何系统上执行该命令时,都会验证系统的passwd 文件是否按描述配置。这里,冒号(:)前定义的文件是资源的标题,我们可以在其他puppet配置部分作为资源使用。

除了标题,我们定义本地名称:

>

file { 'sshdconfig': 
   name => $operaSystem ? { 
      solaris => '/usr/local/etc/ssh/sshd_config', 
      default => '/etc/ssh/sshd_config', 
   }, 
   owner => superuser, 
   group => superuser, 
   mode => 644, 
}

使用标题来引用配置中的文件资源非常方便,标题始终相同,有助于减少OS相关逻辑的重复。

用户示例资源声明:

user { 'Nik':
 ensure     => present,
 uid        => '100',
 gid        => '100',
 shell      => '/bin/bash',
 home       => '/home/Nik'
}

另一个例子可能是使用依赖于文件的服务:

service { 'sshd': 
   subscribe => File[sshdconfig], 
}

这里,一旦 sshdconfig 文件更改,sshd 服务将始终重新启动。重要的是 File[sshdconfig] 和小写一样是作为文件的声明,但是如果我们把它修改为 FILE[sshdconfig],那么它就会成为一个引用。

重点是需要注意的是,我们只能为每个配置文件声明一次资源。如果我们重复声明同一个资源,那么就会导致错误。

即使我们可以通过资源依赖来管理多个关系:

service { 'sshd': 
   require => File['sshdconfig', 'sshconfig', 'authorized_keys']
}   

在puppet 中,所有程序都是用Ruby 编程语言编写的,并添加了.pp 的扩展名,称为清单。 .pp 的完整形式是 puppet 程序。清单文件是 puppet 程序。这用于管理目标主机系统。所有的木偶程 ...