Puppet Manifest
 
 
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 目录。 
使用依赖和排序信息来决定评估顺序。  
评估所需资源以决定是否应实施更改。 
创建、更新或删除资源-通知中将生成一条消息。 
提供有关目录应用程序的详细输出。