2013-04-09 87 views
0

我正在爲一個新項目寫一個後端,在這個後端我想要一個控制器程序。如何編寫可啓動新EC2實例的python腳本?

該項目是高校網站,但我需要一個新的Amazon EC2實例每個大學。我希望擴張儘可能無痛苦。

總之,我希望能夠運行controller new harvard並讓它做到以下幾點:

  • 創建一個新的EC2實例。
  • 創建在本地數據庫的名稱(哈佛)和它的位置(如何訪問它)的新條目。
  • 連接到新創建的實例並開始發送和執行文件。

我讀過一些關於boto和Fabric的內容,但沒有任何關於如何開始的真正領導。

任何幫助將大規模讚賞。

回答

3

我已經使用boto庫爲我的一些項目實例化新的EC2實例,然後在啓動後使用fabric來執行新EC2系統的配置。

要使用它們,你首先需要創建您的訪問令牌亞馬遜本身。這些用於boto的令牌被放置在源文件中,並用於EC2實例的connect方法,或者您可以將它們放置在主目錄中的.boto文件中。後者要容易得多。

你從亞馬遜需要的是以下幾點:

  • 安全組的名稱和SSHKEY。
  • Ami id爲您想要創建的實例。
  • 你想實例的類型,例如:的m1.small

通過以上信息,您將上述信息提供給run_instance方法的調用:

instance = conn.run_instances(ami.ami_id, key_name=ami.sshkey.name, 
    instance_type=server.game.instance_type, 
    security_groups=[server.game.security_group]) 
instance = instance.instances[0] 

while instance.update() == "pending": 
    time.sleep(5) 

此步驟完成後一個新的實例應該開始在您的亞馬遜控制面板中啓動。您需要檢查實例的狀態,一旦它處於running狀態,您可以使用Fabric來配置實例。

with settings(host_string="[email protected]%s" % instance.ip_address, 
    key_filename=os.path.join(os.getenv("HOME"), 
    ".ssh", "%s.pem" % ami.sshkey.name), 
    connection_attempts=5, timeout=60): 

    ... 
    sudo("yum -y install mysql mysql-devel") 
    ... 

隨着它上面將在同一文件運行織物的命令,但使用織物的更加受控的方法是通過晶圓廠文件。這些在Fabric文檔中有更好的解釋。

以上是我用自動按需實例的創建和設置,使調整以適應你適合的代碼。

+0

哇!這實際上是完美的! – 2013-04-10 01:25:39

+1

沒問題,第一次很棘手。 – sean 2013-04-10 01:37:32

+0

那麼,我*有*使用fab和fabfile嗎?或者有一種方法可以從另一個python腳本中調用fabfiles? – 2013-04-10 01:42:44

相關問題