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