我是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
但我怎么能导入这个??
答案 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
希望这足以让你开始。干杯!