我想在我的厨师食谱中创建known_host文件,我想尝试使用这样的东西:
file "/home/xxx/.ssh/known_hosts" do
owner xxx
group xxx
content lazy {`ssh-keyscan localhost #{node[:hostname]}`}
end
请告诉我这是否是创建known_host文件的正确方法,或者我们是否可以使用更好的方法来实现相同目标。
答案 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 }