我有一个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,因此我不确定如何为此添加基于清单的依赖。最像人偶的方式是什么?
答案 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来管理此文件中的行。