如何将参数传递给puppet类。 例如,我有这段代码:
class testlogging {
file { '/home/amo/testloggingfile':
ensure => 'present',
source => 'puppet:///modules/testlogging/testlogging',
}
}
我想要做的是将一个文件名/路径数组作为参数传递给这个类。
答案 0 :(得分:2)
John Bollinger的答案是推荐的答案。如果你想没有Hiera yaml后端,你可以写一个define
类型
class myclass {
# Create a define type, that will take $name as the file
# You provide $src for each file
define mydefine ($src) {
file { $name :
ensure => present,
source => "puppet:///modules/<mymodule>/$src",
}
}
# Use two arrarys, one for file names and other for source
$filearray=["/path/to/file1","/path/to/file2"]
$filesrc=["source1","source2"]
# Loop over the array
each($filearray) | $index, $value | {
mydefine{ $value :
src => $filesrc[$index],
}
}
答案 1 :(得分:1)
你真的应该熟悉文档,特别是Language Reference。它的section on classes讨论了如何定义类以使其接受参数,以及如何指定所需的参数值。
但是,简而言之,模块myclass
中接受所需参数的类mymodule
的定义采用以下形式:
class mymodule::myclass($param) {
# ...
}
您通常会通过自动数据绑定将值绑定到该类的参数,对于所有意图和目的,这意味着Hiera。要为Hiera的默认yaml后端指定要处理的数组值,数据将包含以下内容:
---
mymodule::myclass::param:
- '/path/to/file1'
- '/path/to/file2'
有关如何配置Puppet和Hiera的完整说明对于此论坛来说过于宽泛。