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
在这里,我们可以看到清单是以 .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 目录。
- 使用依赖和排序信息来决定评估顺序。
- 评估所需资源以决定是否应实施更改。
- 创建、更新或删除资源-通知中将生成一条消息。
- 提供有关目录应用程序的详细输出。
下一章:Puppet 模块
Puppet 模块是文件、类、模板和资源的集合。每个模块处理基础架构中的特定任务,例如安装和配置软件。由于模块允许您将代码划分为多个清单,因此它非常有助于组织您的傀儡代码。模块是 puppet 中可重用和可共享的单元。模 ...