仅当文件存在于特定目录中时,Puppet 才有条件

Puppet conditional only if file exists in a particular directory

我的人偶清单中有以下文件资源:

file{
  'example.dat'
  path   => "/path/to/example.dat",
  owner  => devops,
  mode   => "0644",
  source => "/path/to/example.txt" 
}

只有当 .txt 文件存在于特定目录中时,我才想 运行 上面的代码片段。否则,我不希望片段 运行.

如何在 Puppet 中执行此操作?

一般来说,您会创建一个 custom fact 当相关目录满足您的条件时 returns 为真。例如:

Facter.add('contains_txt') do
  setcode do
    ! Dir.glob("/path/to/dir/*.txt").empty?
  end
end

然后你会写:

if $facts['contains_txt'] {
  file { 'example.dat':
    path   => "/path/to/example.dat",
    owner  => devops,
    mode   => "0644",
    source => "/path/to/example.txt",
  }
}