Chef 服务器需要公开吗?

Chef 服务器需要公开吗?

我在本地网络上运行了一个 Chef 服务器,并使用同一网络上的其他机器对其进行了测试,一切正常。我启动了一个 ec2 实例,并尝试引导,它一直运行,直到尝试连接到 Chef 服务器。我的问题是,有没有办法绕过 Chef 服务器的公共设置?或者有没有办法可以绕过节点对服务器的任何要求?

答案1

当你应用最常见的模型来使用Chef 客户端和...一起Chef 服务器,则客户端需要访问服务器。您可以应用任何网络技术(从 VPN 到将客户端 IP 列入白名单),但客户端(通常)会定期检查。

另一种方法是使用零厨师(在过去的美好时光里,人们使用厨师独奏为此,您可能会找到一些有关此内容的博客文章)。这样,您可以从本地磁盘(EC2 实例的磁盘)或 IIRC 直接从 HTTP URL(即 S3)运行您的食谱。

厨师不遵循模型,它允许您仅通过 SSH 连接设置目标实例。如果您确实需要它,那么 Ansible 可能更适合您。

尽管如此,我还是建议你让你的 Chef Server 也在 AWS 上运行 - 或者直接使用他们的 Chef 产品AWS OpsWorks

答案2

我目前的设置和你一样:

  • Chef 服务器(内部)
  • AWS EC2 实例(外部)

当我从 Chef Server 引导到 AWS EC2 时,它会失败。

解决方案对我有用:

  • 将您的 Chef 服务器与公共 IP 地址关联。我通过反向 NAT 实现了这一点。
  • 一旦您的 Chef Server 向公众开放,请确保您的内部防火墙允许来自 AWS EC2 实例的 TCP/IP 连接。
  • 在 AWS EC2 实例上,修改 hosts 文件以包含以下内容

    # Chef Server Public IP Address   |   Chef Server Hostname
    111.111.111.111 production-chef-server.mydomain.com
    
  • 跑步knife bootstrap aws-ec2-public-ip -x root

相关内容