Puppet 类
 
 
Puppet 类
 
 Puppet 类是组合在一起作为一个单元的一组 Puppet 资源。类用于对节点的基本方面进行建模。 Puppet 使用类来使结构可重用和组织。每个节点只能评估一次类。
 
 类在清单文件中描述,位于Puppet 模块。使用类的主要原因是减少任何清单文件或其他 puppet 代码中相同代码的重复。
 
定义一个类
 
 在使用一个类之前,我们必须先定义它,这通过 class 关键字、类名、花括号和一个集合来完成的代码。这部分代码不会自动评估代码。
 
 语法: 
 
 
  
  class my_class {
  ... puppet code ...
} 
   
  
声明类
 
 类的声明部分评估类中的代码并应用其所有资源。这部分代码实际上做了一些事情。
 
 语法: 
 
 
  
  class my_class {
  ... puppet code ...
}
include my_class 
   
  
 
 
  
  class unix { 
   file { 
      '/etc/passwd': 
      owner => 'superuser', 
      group => 'superuser', 
      mode => 644; 
      '/etc/shadow': 
      owner => 'nikita', 
      group => 'nikita', 
      mode => 440; 
   } 
} 
   
  
 让我们看另一个类似于上面例子的简单例子: 
 
 
  
  class unix { 
   file { 
      '/etc/passwd': 
      owner => 'superuser', 
      group => 'superuser', 
      mode => 644; 
   }  
   
   file {'/etc/shadow': 
      owner => 'nikita', 
      group => 'nikita', 
      mode => 440; 
   } 
} 
   
  
参数化类
 
 参数用于允许类请求外部数据。如果类必须将自身配置为事实以外的数据,则数据通常会通过参数插入到类中。
 
 让我们看一个示例: 
 
 
  
  class windows_ntp (  
  String $server = 'time.windows.com',
) { 
  registry::value { 'NtpServer':
    key  => 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters',
    data => "${server},0x9",
  }
  service { 'w32time':
    ensure => running,
    enable => true,
  }
} 
   
  
 在上面的示例中,我们创建了一个类 windows_ntp,它将注册表资源和服务资源组合在一起以配置 Windows 时间服务。 windows_ntp 类接受时间服务器地址作为名为 $server 的参数。