人偶file_line仅在文件存在时

时间:2019-04-30 14:37:01

标签: puppet

我有一个file_line,我想在存在给定文件的任何系统上执行,但是在所有不存在该文件的系统上都会被忽略。

file_line {'java_security_random':
  line  => 'securerandom.source=file:/dev/urandom',
  path  => '/etc/alternatives/jre/lib/security/java.security',
  match => /^securerandom.source=.*/,
}

问题是我在所有未安装Java的主机上收到错误。我们不使用Puppet来管理或安装Java,因此我不确定如何为此添加基于清单的依赖。最像人偶的方式是什么?

1 个答案:

答案 0 :(得分:3)

您可能 1 需要创建一个自定义事实,以报告此文件的存在。

# has_java_security.rb

Facter.add(:has_java_security) do
  setcode do
    File.exist?('/etc/alternatives/jre/lib/security/java.security')
  end
end

在您的清单中

if $facts['has_java_security'] {
  file_line {'java_security_random':
    line  => 'securerandom.source=file:/dev/urandom',
    path  => '/etc/alternatives/jre/lib/security/java.security',
    match => /^securerandom.source=.*/,
  }
}

有关如何编写自定义事实的更多信息,请参见here


1 当然,我假设您有充分的理由使用一种工具来管理Java,并使用Puppet来管理此文件中的行。