6

這是一個主要關於廚師的問題。當考慮使用Chef控制Amazon VPC內部的節點時,我遇到了一些困難,主要是廚師不容易到達沒有外部IP地址的節點。如何使用Chef在VPC內部啓動亞馬遜EC2實例?

我通過場景#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 

我在做什麼錯?

回答

1

解決方案是建立一個隧道,並將公共可見計算機的某個端口上的ssh隧道連接到雲中的所有其他計算機。因此,我的負載均衡器在套接字80上提供http通信量,可通過套接字22訪問,並使用套接字2222,2223,2244 ...將ssh隧道傳輸到非公有云實例。在負載均衡器(或任何公共實例)運行:

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

例如:

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

爲了刀能夠與服務器通話,您可能需要設置VPN。如果您的VPC已經通過VPN連接到您的本地網絡,那麼它應該可以工作,但如果沒有,您可能需要運行OpenVPN服務器或類似的東西。

您還可以設置服務器在其他兩個方面:

  1. 創建EC2實例,讓它啓動。然後對它運行刀靴。
  2. 使用適當的用戶數據創建一個EC2實例,並使用cloud-init進行設置(如果您運行的是包含cloud-init的ubuntu)。
+0

我想具體情況2雖然...有沒有一種方式來使用與亞馬遜VPC廚師,沒有額外的硬件,只有NAT和端口轉發? – 2012-04-24 22:40:29

+0

如果你的服務器可以連接到互聯網,那麼你應該沒問題。如果沒有,您需要在VPC內部設置一個Chef服務器,並將您的cloud-init腳本指向它。 VPC可能相當複雜,這取決於您的服務器是在「公共」子網還是「私有」子網。 – 2012-04-27 16:00:43

0

需要有一個彈性IP,以獲得一個公網IP的關聯,以實例的方式輕鬆訪問,然後通過EIP執行所有引導和SSH活動。

+1

並非如此,您可以配置實例而無需爲其分配公共IP。首先使用VPC的原因之一是在所有節點上都沒有公共地址。 – 2012-07-15 12:43:39