Puppet - 清单文件

在Puppet中,所有使用Ruby编程语言编写并以 .pp 的扩展名保存的程序称为清单.一般而言,所有使用创建或管理任何目标主机的内容构建的Puppet程序称为清单.所有用Puppet编写的程序都遵循Puppet编码风格.

Puppet的核心是声明资源的方式以及这些资源如何表示它们的状态.在任何清单中,用户可以拥有使用类和定义组合在一起的不同种类资源的集合.

在某些情况下,Puppet清单甚至可以有条件语句以便达到理想状态.但是,最终所有这些都归结为确保以正确的方式定义和使用所有资源,并且在转换为目录后应用时定义的清单能够执行其设计的任务.

清单文件工作流程

Puppet清单包含以下组件 :

  • 文件(这些是Puppet与它们无关的普通文件,只是为了拾取它们并将它们放在目标位置)

  • 资源

  • 模板(这些可用于构建节点上的配置文件.

  • 节点(此处定义了与客户机节点相关的所有定义)

  • 课程

注意事项

  • 在Puppet中,所有清单文件都使用Ruby作为编码语言,并使用 .pp 扩展名保存.

  • 许多清单中的"导入"语句用于在Puppet启动时加载文件.

  • 为了导入目录中包含的所有文件,您可以使用import'clients/*'等其他方式使用import语句.这将导入该目录中的所有 .pp 文件.

Manifest

写清单

使用变量

写清单时,用户可以在清单中的任何位置定义新变量或使用现有变量. Puppet支持不同类型的变量,但很少使用它们,如字符串和字符串数组.除此之外,还支持其他格式.

字符串变量示例

$package = "vim"  

package {  $package: 
   ensure => "installed" 
}


使用循环

当希望进行多次迭代时使用循环在同一组代码上,直到满足定义的条件.它们还用于使用不同的值集执行重复性任务.为10个不同的事物创建10个任务.可以创建一个单独的任务并使用循环来重复任务,并使用想要安装的不同包.

最常用的数组是用不同的值重复测试.

$packages = ['vim', 'git', 'curl']  

package { $packages: 
   ensure => "installed" 
}


使用条件

Puppet支持大多数可以找到的条件结构用传统的编程语言.条件可用于动态定义是执行特定任务还是应执行一组代码.像if/else和case语句一样.此外,像execute这样的条件也支持类似条件的属性,但只接受命令输出作为条件.

if $OperatingSystem != 'Linux' { 
   warning('This manifest is not supported on this other OS apart from linux.') 
} else { 
   notify { 'the OS is Linux. We are good to go!': }
}