在Puppet中, 编码样式描述了尝试将系统配置上的基础结构转换为代码时必须遵循的所有要求。Puppet需要资源来工作和执行其所有已定义的任务。
众所周知, Puppet使用Ruby语言作为其编码语言, 它提供了几个预定义的功能, 并且借助这些功能, 通过简单的代码配置就可以很轻松地完成这些工作。
基本单位
Puppet使用了许多易于理解和使用的基本编码样式。让我们来看一些:
资源资源
在puppet中, 资源是用于对系统配置进行建模的基本单位。
资源是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], 则它会成为参考。
要注意的主要一点是, 每个Config文件只能声明一次资源。如果我们重复声明相同的资源, 则将导致错误。
甚至我们也可以通过资源依赖关系来管理多个关系:
service { 'sshd':
require => File['sshdconfig', 'sshconfig', 'authorized_keys']
}
评论前必须登录!
注册