如何使用Chef在VPC内启动amazon ec2实例?

时间:2012-04-23 22:59:40

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

这是一个主要是关于厨师的问题。在使用Chef查看Amazon VPC内部的控制节点时,遇到了一些困难,主要是厨师无法轻松访问没有外部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

我做错了什么?

3 个答案:

答案 0 :(得分:1)

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

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

  1. 创建一个EC2实例并让它启动。然后对它进行刀具引导。
  2. 使用正确的用户数据创建EC2实例并让cloud-init进行设置(如果您正在运行,请说包含cloud-init的ubuntu)。

答案 1 :(得分:1)

解决方案是设置隧道并将公共可见计算机的某个端口上的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 &

答案 2 :(得分:0)

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