2013-04-09 135 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

相关问题