📅  最后修改于: 2020-10-31 14:05:13             🧑  作者: Mango
在Puppet中,所有使用Ruby编程语言编写并以.pp扩展名保存的程序都称为manifests 。一般而言,所有旨在创建或管理任何目标主机的Puppet程序都称为清单。用Puppet编写的所有程序都遵循Puppet编码风格。
Puppet的核心是资源的声明方式以及这些资源如何表示其状态。在任何清单中,用户都可以拥有使用类和定义分组在一起的不同种类资源的集合。
在某些情况下,Puppet清单甚至可以具有条件语句以实现所需的状态。但是,归根结底,要确保以正确的方式定义和使用所有资源,并且定义的清单在转换为目录后应用时能够执行为其设计的任务。
人偶清单包含以下组件-
文件(这些是纯文件,与Puppet无关,仅是将它们拾起并放在目标位置)
资源资源
模板(可用于在节点上构造配置文件)。
节点(与客户端节点有关的所有定义均在此处定义)
班级
在Puppet中,所有清单文件均使用Ruby作为其编码语言,并以.pp扩展名保存。
Puppet启动时,许多清单中的“导入”语句用于加载文件。
为了导入目录中包含的所有文件,可以以其他方式使用import语句,例如import’clients / *’。这将导入该目录内的所有.pp文件。
在编写清单时,用户可以在清单中的任何点定义新变量或使用现有变量。木偶支持不同类型的变量,但他们几个经常使用如字符串和字符串数组。除此之外,还支持其他格式。
$package = "vim"
package { $package:
ensure => "installed"
}
当一个人希望对同一组代码进行多次迭代直到满足定义的条件时,将使用循环。它们还用于执行具有不同值集的重复性任务。为10种不同的事物创建10个任务。一个人可以创建一个任务,然后使用循环用一个要安装的不同软件包重复该任务。
最常见的是,使用数组重复具有不同值的测试。
$packages = ['vim', 'git', 'curl']
package { $packages:
ensure => "installed"
}
Puppet支持大多数条件结构,这些条件结构可以在传统编程语言中找到。条件可用于动态定义是执行特定任务还是应执行一组代码。像if / else和case语句。另外,像execute这样的条件也将支持与condition一样的属性,但仅接受命令输出作为条件。
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!': }
}