Puppet file_line 仅当文件存在时
Puppet file_line only if file exists
我有一个 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,所以我不确定如何为此添加基于清单的依赖项。处理这个问题最像 Puppet 的方法是什么?
您可能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 来管理此文件中的行。
我有一个 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,所以我不确定如何为此添加基于清单的依赖项。处理这个问题最像 Puppet 的方法是什么?
您可能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 来管理此文件中的行。