使用puppet检查自定义文件

时间:2016-01-11 21:52:19

标签: puppet

我的木偶清单的一部分检查是否存在自定义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} })。

有更好的方法吗?

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会为你做正确的事。