在厨师食谱中使用ssh键扫描

时间:2014-12-24 09:13:58

标签: chef

我想在我的厨师食谱中创建known_host文件,我想尝试使用这样的东西:

file "/home/xxx/.ssh/known_hosts" do
    owner   xxx
    group   xxx
   content lazy {`ssh-keyscan localhost #{node[:hostname]}`}
end

请告诉我这是否是创建known_host文件的正确方法,或者我们是否可以使用更好的方法来实现相同目标。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

实际上只有两种解决方案:

你的这个似乎是一个很好的解决方案,或许可以提供一个供应商食谱来清理它。


其次,您可以将以下选项添加到您进行的任何ssh调用中:

ssh -o StrictHostKeyChecking=no

我并不完全相信一个人比另一个人“更好”。只有两种不同的方法来解决同样的问题。

答案 2 :(得分:0)

要添加到Tejay的正确答案,您可能应该使用现有的ssh食谱。

如果您只是在localhost上寻找密钥,ohai已经在node['keys']['ssh']为您加载了密钥。因此,您还可以使用Chef search()来收集其他节点的主机密钥。

我会避免使用反引号来运行这样的命令,它对错误,复杂的编码更改以及各种其他事情都没有很好的处理能力。 Chef提供shell_out!形式的帮助,可以通过

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