生成导出的 SSH 密钥时突然出现“无法评估:字段‘key’是必需的”错误

生成导出的 SSH 密钥时突然出现“无法评估:字段‘key’是必需的”错误

在没有对 puppet 配置进行任何突然更改的情况下,我们的一些主机在创建导出的 SSH 密钥时开始出现“无法评估:字段‘key’是必需的”错误,但有趣的是,并非所有 SSH 密钥在所有主机上都会失败,这里有一个密钥创建成功和创建失败的例子:

Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for srvadx-green-7zhg.c.example.internal
Info: Applying configuration version '1511609586'
Notice: /Stage[main]/Basics::Ssh/Sshkey[srvadx-green-w5ld]/ensure: created
Info: Computing checksum on file /etc/ssh/ssh_known_hosts
Info: FileBucket got a duplicate file {md5}17787ff909a06cf0243c18cf33f1c384
Error: /Stage[main]/Basics::Ssh/Sshkey[srvadx-green-w5ld]: Could not evaluate: Field 'key' is required
Notice: /Stage[main]/Basics::Ssh/Sshkey[srvadx-green-88kp]/ensure: created
Error: /Stage[main]/Basics::Ssh/Sshkey[srvadx-green-88kp]: Could not evaluate: Field 'key' is required
Notice: /Stage[main]/Basics::Java/Exec[set-licence-selected]/returns: executed successfully
Notice: /Stage[main]/Basics::Java/Exec[set-licence-seen]/returns: executed successfully
Notice: Finished catalog run in 1.98 seconds

首先我怀疑 HSQLDB 损坏了,于是删除了整个 puppetdb 数据目录并在所有主机上重新运行 puppet。一开始看起来很有希望,但很快上述错误又出现了。

如何调试甚至更好地解决问题以及如何防止将来再次发生?

答案1

为了帮助调试/了解发生了什么,您至少可以做三件事:

  1. 在调试模式下运行代理: puppet agent -tv --debug 。这有点像消防水管,但可能那里有一些线索(这有点牵强——问题可能出在服务器上
  2. 查看 puppetmaster/server 日志;我建议在问题节点上运行代理时跟踪它们,这样您就可以确保看到这些运行的输出。那里很可能有线索(服务器会发出大量关于代理上看不到的不太正确的事情的警告)
  3. 深入研究 HSQLDB 数据库;表中应该有一些与各种 ssh 密钥相关的行。查看那里有什么信息,特别是如果有些有效而有些无效(比较行)。

答案2

最后,通过删除 PuppetDB 数据目录并在所有节点上重新运行 puppet,它终于起作用了。我怀疑是某些 HSQLDB 文件损坏了。

相关内容