我的木偶清单的一部分检查是否存在自定义sshd_config
。如果找到一个,我就用它。如果不是那么我使用我的默认值。我只是想知道是否有更多的“傀儡”方式来做这个
if file("/etc/puppetlabs/puppet/files/${::fqdn}/etc/ssh/sshd_config", '/dev/null') != '' {
$sshd_config_source = "puppet:///private/etc/ssh/sshd_config"
} else {
$sshd_config_source = "puppet:///public/etc/ssh/sshd_config"
}
file { '/etc/ssh/sshd_config':
ensure => 'present',
mode => '600',
source => $sshd_config_source,
notify => Service['sshd'],
}
此代码有效,但有点奇怪file
我必须在puppet master上给它完整路径但是在分配$sshd_config_source
时我必须使用puppet fileserver路径({{1} })。
有更好的方法吗?
答案 0 :(得分:1)
file
类型的一个鲜为人知的功能,您可以提供多个source值。
来自文档:
可以将多个源值指定为数组,Puppet将使用存在的第一个源。这可用于将不同的文件提供给不同的系统类型:
file { "/etc/nfs.conf":
source => [
"puppet:///modules/nfs/conf.$host",
"puppet:///modules/nfs/conf.$operatingsystem",
"puppet:///modules/nfs/conf"
]
}
所以你应该按顺序指定特定文件和通用文件URL,Puppet会为你做正确的事。