【问题标题】:How to launch an amazon ec2 instance inside VPC using Chef?如何使用 Chef 在 VPC 中启动亚马逊 ec2 实例?
【发布时间】:2012-04-23 22:59:39
【问题描述】:

这是一个主要关于 Chef 的问题。在使用 Chef 查看 Amazon VPC 中的控制节点时,我遇到了一些困难,主要是 Chef 无法轻松访问没有外部 IP 地址的节点。

我浏览了场景#2 http://docs.amazonwebservices.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html#Case2_Launch_NAT的基础教程

但是,这会超时:

knife ec2 server create -N app-server-1 -f m1.small -i rails-quick-start.pem -r "role[base]" -G WebServerSG -S rails-quick-start -x ubuntu -s subnet-580d7e30 -y -I ami-073ae46e -Z us-east-1d

我做错了什么?

【问题讨论】:

    标签: amazon-web-services chef-infra server-administration amazon-vpc


    【解决方案1】:

    为了让刀能够与服务器对话,您可能需要设置 VPN。如果您的 VPC 已经通过 VPN 连接到您的本地网络,那么它应该可以工作,但如果没有,您可能需要运行 OpenVPN 服务器或类似的东西。

    您还可以通过其他两种方式设置服务器:

    1. 创建一个 EC2 实例并让它启动。然后对它运行 Knife bootstrap。
    2. 使用正确的用户数据创建一个 EC2 实例并设置 cloud-init(如果您运行的是包含 cloud-init 的 ubuntu)。

    【讨论】:

    • 我正在尝试具体方案 2... 有没有办法将 Chef 与 Amazon VPC 结合使用,无需额外硬件,仅 NAT 和端口转发?
    • 如果您的服务器可以访问互联网,那么您应该没问题。如果不是,您需要在您的 VPC 中设置一个 Chef 服务器并将您的 cloud-init 脚本指向它。 VPC 可能相当复杂,这完全取决于您的服务器是在“公共”子网还是“私有”子网中。
    【解决方案2】:

    解决方案是设置一个隧道,并通过隧道将公开可见计算机的某个端口上的 ssh 连接到云中的所有其他计算机。因此,我的负载均衡器在套接字 80 上提供 http 流量,可通过套接字 22 访问,并使用套接字 2222、2223、2224 ……将 ssh 隧道连接到非公共云实例。在负载均衡器(或任何公共实例)上运行:

    ncat --sh-exec "ncat PRIVATE.SUBNET.IP 22" -l 2222 &
    

    例如:

    ncat --sh-exec "ncat 10.0.1.1 22" -l 2222 &
    

    【讨论】:

      【解决方案3】:

      需要有一种方法将弹性 IP 与实例相关联,以便获得公共 IP 以便于访问,然后通过 EIP 执行所有引导和 SSH 活动。

      【讨论】:

      • 并非如此,您可以配置实例而无需为其分配公共 IP。首先使用 VPC 的原因之一是没有在所有节点上都有公共地址。
      猜你喜欢
      • 2010-12-28
      • 1970-01-01
      • 2016-10-27
      • 2014-10-08
      • 2014-03-30
      • 2020-05-12
      • 2015-01-13
      • 1970-01-01
      • 2013-11-11
      相关资源
      最近更新 更多