我已經使用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文檔中有更好的解釋。
以上是我用自動按需實例的創建和設置,使調整以適應你適合的代碼。
哇!這實際上是完美的! – 2013-04-10 01:25:39
沒問題,第一次很棘手。 – sean 2013-04-10 01:37:32
那麼,我*有*使用fab和fabfile嗎?或者有一種方法可以從另一個python腳本中調用fabfiles? – 2013-04-10 01:42:44