木偶理解参数类

时间:2016-01-29 08:52:51

标签: module puppet lighttpd

我是Puppet的新手。我有一个木偶基础设施。 我是从

安装的
  

puppetforge" example42 / lighttpd"

我能够毫无问题地将这个类部署到一个木偶控制节点。 我现在的问题,.how我可以使用这个类中的参数吗?我不明白我可以在哪里激活参数。我想用自定义的index.html和不同的日志文件路径部署lighttpd。我希望你能给我一个后悔:)

在文件params.pp

This class is not intended to be used directly.
It may be imported or inherited by other classes

但我怎么能导入这个??

2 个答案:

答案 0 :(得分:2)

首先,为了直接开始使用puppet,您应该查看相关模块的文档(即README,README.md等)。接下来,了解params模式。 puppet模块中的git log "$(git describe --tags --abbrev=0 HEAD^)..HEAD" --oneline --count 类通常是一个包含NO资源的类,用于保存模块的默认数据(不是从hiera等外部源提供的数据)。大多数时候你会看到这样的东西:

params

在init或模块中的其他清单文件中。那是因为它继承了params类的值。

希望这至少有一点帮助。

答案 1 :(得分:1)

简而言之,不要直接使用params.pp(通过声明)。这个类是params设计模式的一部分,它指出我们的参数的默认值可以放在params.pp puppet类中,然后可以由我们需要访问params.pp中定义的参数的所有类继承。

我认为最好的起点是每个Puppet模块都有的init.pp类。它可以在您从Puppet Forge下载的Puppet模块的manifest目录中找到。

/Users/bjusufbe/.puppetlabs/etc/code/modules/lighttpd/manifests
Bakirs-MacBook-Pro:manifests bjusufbe$ ls -la
total 56
drwxr-xr-x   6 bjusufbe  staff    204 Oct 23 19:27 .
drwxr-xr-x  10 bjusufbe  staff    340 Oct 23 19:27 ..
-rw-r--r--   1 bjusufbe  staff   1705 Oct 23 19:26 dotconf.pp
-rw-r--r--   1 bjusufbe  staff  15763 Oct 23 19:27 init.pp
-rw-r--r--   1 bjusufbe  staff   2633 Jul 17  2013 params.pp
-rw-r--r--   1 bjusufbe  staff    560 Apr 10  2013 spec.pp

如果打开init.pp,您将看到以下类定义:

class lighttpd (
  $use_ssl             = params_lookup( 'use_ssl' ),
  $my_class            = params_lookup( 'my_class' ),
  $source              = params_lookup( 'source' ),
  $source_dir          = params_lookup( 'source_dir' ),
  ...

所有参数都使用params_lookup自定义函数(不是由Puppet提供,而是来自example42命名空间的其他模块的一部分)。您可以在以下链接中查看此功能的详细信息:How to use params_lookup章节:PARAMS LOOKUP ORDER

但是,为了方便您使用,您可以在site.pp中使用以下语法声明此类(如果使用Puppet master / agent方案),或者在无主场景中的任何* .pp文件中声明此类可以简单地应用致电:

puppet apply <name_of_pp_file>.pp

简单声明如下:

class { 'lighttpd':
  <anyparameterfromthisclassdefinition> => <value>
}

示例:

class { 'lighttpd':
  use_ssl => true,
}

如果您不想在类声明中传递任何参数,那么将使用由自定义函数params_lookup为此类中的每个参数计算的默认值。在这种情况下,你可以这样做:

include lighttpd

希望这足以让你开始。干杯!