我在我们的本地网络上运行了一个 Chef 服务器,并用同一网络上的其他机器对其进行了测试,一切正常。我启动了一个 ec2 实例,并尝试引导并且它一直工作,直到它尝试连接到 Chef 服务器。我的问题是,有没有办法让 Chef 服务器公开?或者有没有一种方法可以绕过节点对服务器的任何要求?
我在我们的本地网络上运行了一个 Chef 服务器,并用同一网络上的其他机器对其进行了测试,一切正常。我启动了一个 ec2 实例,并尝试引导并且它一直工作,直到它尝试连接到 Chef 服务器。我的问题是,有没有办法让 Chef 服务器公开?或者有没有一种方法可以绕过节点对服务器的任何要求?
当您应用最常见的模型将Chef Client与Chef Server一起使用时,客户端需要到达服务器。您可以将 VPN 中的任何网络技术应用于将客户端 IP 列入白名单,但客户端(通常)会定期签入。
另一种方法是使用Chef Zero(过去人们使用Chef Solo来实现这一点,您可能会发现一些关于此的博客文章)。这样,您可以从本地磁盘(EC2 实例之一)或 IIRC 直接从 HTTP URL(即 S3)运行您的说明书。
Chef 不遵循推送模型,这将允许您仅通过 SSH 连接设置目标实例。如果你真的需要,那么 Ansible 可能更适合你。
尽管如此,我还是建议您让您的 Chef 服务器也运行在 AWS 上——或者直接使用他们的 Chef 产品AWS OpsWorks。
我目前的设置与您相同:
当我从 Chef 服务器引导到 AWS EC2 时,它会失败。
对我有用的解决方案:
在 AWS EC2 实例上,修改 hosts 文件以包含以下内容
knife bootstrap aws-ec2-public-ip -x root