无法使用 knife ssh 访问我的 EC2 厨师节点

Can't access my EC2 chef node with knife ssh

所以我已经通过多种方式设置了我的 EC2 Chef 节点(使用 knife 引导或通过我的节点的 client-chef 参数),每次我尝试通过 knife ssh 访问该节点时,我都会收到以下错误:

WARNING: Failed to connect to *node's FQDN* -- SocketError: getaddrinfo: nodename nor servname provided, or not known

我主要使用 knife ssh 更新到 node 并且只是 运行 sudo client-chef

根据这个错误,我假设我无法访问 FQDN 作为其内部地址,厨师服务器不应该为我做这件事吗? 我很快就会在 AWS 上拥有一个私有 VPC,因此在任何情况下我都无法从我的工作站访问内部地址。

有没有办法让 Chef 服务器 运行 这个 ssh 命令,或者 运行 任何其他方式?

我发现的基本上是我对 chef 工作方式的误解,我一直在寻找某种推送机制,而 chef 不支持开箱即用的推送。

有两种解决方法:

1) Chef 的推送工作 - 在我写这篇文章时 post,Chef 推送的工作在 Ubuntu 14 上不起作用,我不太热衷于让这项服务决定OS 我的选择

2) 在任何地方都不推荐,但在我的厨师服务器上安装 knife 有效。由于 Chef 服务器位于 VPC 内,他是我唯一的访问点,我将从那里 运行 刀 ssh 到我的所有其他节点。

如果有人正在寻找更多基于推送的服务,我建议您查看 SaltStack

由于您的节点没有外部 IP,因此您应该使用 ssh 网关。请参考这个话题:Using knife ec2 plugin to create VM in VPC private subnet

正如您在回答中提到的,厨师不提供推送功能,而是使用拉取功能。而 knife ssh 正是这样做的——它通过 ssh 连接到节点并允许您使用 运行 chef-client 命令从 chef 服务器拉取配置。

请注意,在您的第二个解决方案中,VPC 内的任何带有 knife 的节点都可以。这不一定是 Chef 服务器,或者我应该说 Chef 服务器根本不必在这个 VPC 中。但是,这样的解决方案会损害安全性,因为您使用 Chef 服务器的身份验证和您的 ssh 私钥都位于您的工作站之外的某个地方。

还有一个方法要提一下,就是如果你的策略经过测试,将 chef-client 运行s 添加到 cron。