我的公司要求我使用 autokey 在 ntpd 中实现签名时间。autokey 工作的要求之一是在每台主机上生成密钥。所有客户端都属于同一组,因此它们都使用相同的密码。如果可能的话,我希望不必在每台主机上手动生成密钥。如果 puppet 检测到文件类型不存在,是否有办法执行命令?或者我可以使用其他替代方法来通过 puppet 管理密钥?
答案1
在 Puppet 中,要执行命令,请使用exec
资源。要确保仅当特定文件不存在时才执行命令,请指定creates
选项。
例如:
exec { "create_needed_directory":
command => "/bin/mkdir -p /tmp/needed/directory",
creates => "/tmp/needed/directory"
}
如果需要执行一些更复杂的检查,可以使用onlyif
选项:
exec { "run_account_purger":
command => "/usr/local/sbin/account_purger",
onlyif => "grep -c old_account /etc/passwd",
}
两个例子都取自木偶食谱。
说实话,我不知道这是否是生成 NTP 密钥的最佳方式。您也可以在一台机器上生成所有密钥,将它们放在 puppet repo 中,然后通过资源分发它们file
。这可能更安全一些,因为这样您就不需要暴露密码了。