Puppet – 清单文件
Puppet – 清单文件
在 Puppet 中,所有使用 Ruby 编程语言编写并以.pp扩展名保存的程序都称为manifests。一般而言,所有旨在创建或管理任何目标主机的 Puppet 程序都称为清单。所有用 Puppet 编写的程序都遵循 Puppet 编码风格。
Puppet 的核心是资源的声明方式以及这些资源如何表示它们的状态。在任何清单中,用户都可以拥有一组不同类型的资源,这些资源使用类和定义组合在一起。
在某些情况下,Puppet manifest 甚至可以有一个条件语句以达到所需的状态。但是,最终归根结底是要确保以正确的方式定义和使用所有资源,并且在转换为目录后应用定义的清单能够执行其设计任务。
清单文件工作流
傀儡清单由以下组件组成 –
-
文件(这些是普通文件,Puppet 与它们无关,只是为了捡起它们并将它们放置在目标位置)
-
资源
-
模板(这些可用于在节点上构建配置文件)。
-
节点(所有与客户端节点相关的定义都在这里定义)
-
班级
注意事项
-
在 Puppet 中,所有清单文件都使用 Ruby 作为它们的编码语言,并以.pp扩展名保存。
-
许多清单中的“导入”语句用于在 Puppet 启动时加载文件。
-
为了导入目录中包含的所有文件,您可以以另一种方式使用 import 语句,例如 import ‘clients/*’。这将导入该目录中的所有.pp文件。
编写清单
使用变量
在编写清单时,用户可以在清单中的任何位置定义新变量或使用现有变量。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!': } }