Puppet Manifest

在puppet 中,所有程序都是用Ruby 编程语言编写的,并添加了.pp 的扩展名,称为清单。 .pp 的完整形式是 puppet 程序。

清单文件是 puppet 程序。这用于管理目标主机系统。所有的木偶程序都遵循木偶编码风格。

我们可以在任何清单中使用一组不同类型的资源,按定义和类分组。

木偶清单也支持条件语句。默认清单文件位于/etc/puppet/manifests/site.pp 位置。

清单组件

Puppet 清单具有以下组件:

  • 文件: 文件是可以直接部署在 Puppet 客户端上的纯文本文件。比如yum.conf、httpd.con等
  • 资源: 资源是我们需要评估或改变的元素。资源可以是包、文件等。
  • 模板: 这用于在节点上创建配置文件,我们可以稍后重用。
  • 节点: 代码块,其中定义了与客户端相关的所有信息和定义。
  • 类: 类用于对不同类型的资源进行分组。

编写清单

使用变量

Puppet 提供了许多我们可以在清单中使用的内置变量.我们也可以创建我们自己的变量来在 puppet manifest 中定义。 Puppet 提供了不同类型的变量。一些经常使用的变量是字符串或字符串数​​组。

让我们看一个字符串变量的例子:

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

使用循环

循环用于多次运行同一组代码,直到定义的条件变为真。为了执行循环,我们可以使用一个数组。让我们看一个例子:

$packages = ['vim', 'git', 'curl']  
package { $packages: 
   ensure => "installed" 
}

使用条件

Puppet 允许我们使用不同类型的条件语句。比如if-else语句、case语句等,看个例子:

if $Color != 'White' { 
   warning('this color is not good for wall') 
} else { 
   notify { 'this color is best for wall': }
}

示例

编写清单

正如我们所知,我们可以创建我们的资源。让我们从通知资源等常见资源开始。

notify { 'greeting':
  message => 'Hello, world!'
}

上面代码中,notify是资源,消息是属性。 消息 具有用逗号与其值分隔的属性,这是在 Ruby、PHP、Perl 和其他脚本语言。

创建一个清单并在该清单中编写上述脚本。首先,您必须切换到 root 用户。

nikita@puppetClient:~$ sudo su
root@puppetClient:~# vi helloworld.pp

Puppet Manifest Puppet Manifest

在这里,我们可以看到清单是以 .pp 扩展名命名的文本文件。我们可以使用任何编辑器使用任何文本编辑器创建或修改清单。

应用清单

木偶的主要品质是易于测试您的代码.在这里,为了在 puppet manifests 上工作,不需要配置复杂的测试环境。

为了应用 manifest,puppet 使用 apply 命令,它告诉 puppet 应用单个 puppet manifest:

# puppet apply helloworld.pp
Notice: Compiled catalog for puppetclient in environment production in 0.03 seconds
Notice: Hello, World!
Notice: /Stage[main]/Main/Notify[greeting]/message:
  defined 'message' as 'Hello, World!'
Notice: Applied catalog run in 0.01 seconds

Puppet Manifest

这里可以看到,Puppet已经成功应用了manifest。这个过程由很多步骤完成:

  • 从清单编译或构建 Puppet 目录。
  • 使用依赖和排序信息来决定评估顺序。
  • 评估所需资源以决定是否应实施更改。
  • 创建、更新或删除资源-通知中将生成一条消息。
  • 提供有关目录应用程序的详细输出。

下一章:Puppet 模块

Puppet 模块是文件、类、模板和资源的集合。每个模块处理基础架构中的特定任务,例如安装和配置软件。由于模块允许您将代码划分为多个清单,因此它非常有助于组织您的傀儡代码。模块是 puppet 中可重用和可共享的单元。模 ...