我正在向我的所有计算机发送带有puppet的特定配置文件。我们称这个班为class A
:
class A {
# ship lightdm file
file {
"/etc/lightdm/lightdm.conf":
mode => 644,
owner => root,
group => root,
ensure => file,
require => Package["lightdm"],
source => "puppet:///modules/my_module/lightdm.conf";
}
}
class A
实际上将通过其他类加载:
node 'somecomputer' {
include role::my_role #(will load class A)
}
现在,某些用户需要该特定配置文件的特殊版本。所以我考虑编写一个类B
(除A
部分外,它看起来与source
相同),并为该特定计算机的节点配置包含该类:
node 'specialcomputer' {
include role::my_role #(will load class A)
include B
}
但是,我想知道木偶将如何确定最终要运送哪个文件。由于木偶中没有执行顺序,在我看来,我的当前方法不起作用(加上资源file
将被定义两次,这也不起作用)
我也无法在class A
上使用继承,因为某些顶级类包含class A
。那我该怎么处理这个案子呢?任何指针?
答案 0 :(得分:2)
如果您提供多个来源,则会选择第一个可用的来源:
file {
"/etc/lightdm/lightdm.conf":
mode => 644,
owner => root,
group => root,
ensure => file,
require => Package["lightdm"],
source => [ "puppet:///modules/my_module/lightdm-${::fqdn}.conf",
"puppet:///modules/my_module/lightdm.conf" ],
}
然后你会在files目录中有2个文件:
files/lightdm.conf (for all hosts)
files/lightdm-specialcomputer.domain.com.conf (for the exception)
这不完全是你所要求的,但我认为这就是你想要的......