Chef infra 在厨师食谱中使用ssh密钥扫描

Chef infra 在厨师食谱中使用ssh密钥扫描,chef-infra,Chef Infra,我想在我的厨师食谱中创建已知的_主机文件,我正在尝试使用以下内容: file "/home/xxx/.ssh/known_hosts" do owner xxx group xxx content lazy {`ssh-keyscan localhost #{node[:hostname]}`} end 请告诉我这是否是创建已知主机文件的正确方法,或者我们是否可以使用更好的方法来实现此目的。实际上只有两种解决方案: 你的,这似乎是一个很好的解决方案,也许做一个供应

我想在我的厨师食谱中创建已知的_主机文件,我正在尝试使用以下内容:

file "/home/xxx/.ssh/known_hosts" do
    owner   xxx
    group   xxx
   content lazy {`ssh-keyscan localhost #{node[:hostname]}`}
end
请告诉我这是否是创建已知主机文件的正确方法,或者我们是否可以使用更好的方法来实现此目的。

实际上只有两种解决方案: 你的,这似乎是一个很好的解决方案,也许做一个供应商食谱为它清理


其次,您只需将以下选项添加到所做的任何ssh调用:

ssh -o StrictHostKeyChecking=no


我不完全相信其中一个比另一个更好。只有两种不同的方法可以解决相同的问题。

看看超市上的
ssh
食谱。它为已知的_hosts文件提供了一个提供者,可以为您使用keyscan,还允许您添加新条目而不删除现有条目(正如您所做的那样)。它也经过了很好的测试,已经被许多人使用了好几年。

除了Tejay的正确回答之外,还有一些东西需要补充,您可能应该使用现有的
ssh
食谱

如果您只是在本地主机上查找密钥,ohai已经在
节点['keys']['ssh']
中为您加载了它。因此,您还可以使用Chef的
search()
从其他节点创建宿主密钥

我会避免在运行这样的命令时使用反勾号,因为它不能很好地处理错误、复杂的编码更改和所有其他事情。厨师以
shell\u out的形式提供助手可通过

content lazy { shell_out!('some command here').stdout }

我很高兴你喜欢它。我现在维护它好几天了,虽然我不能把它的原版归功于它。如果您发现有改进的余地,请提交github问题。请参阅:建议使用已知的\u hosts食谱)