0

我正在为一个新项目编写一个后端,在这个后端我想要一个控制器程序。

该项目是一个大学网站,但我需要为每所大学创建一个新的 Amazon EC2 实例。我希望扩展尽可能无痛。

简而言之,我希望能够运行controller new harvard并让它执行以下操作:

  • 创建一个新的 EC2 实例。
  • 在本地数据库中创建一个名为(哈佛)及其位置(如何访问它)的新条目。
  • 连接到新创建的实例并开始发送和执行文件。

我已经阅读了一些关于 boto 和 Fabric 的内容,但没有任何关于如何开始的真正线索。

任何帮助将不胜感激。

4

1 回答 1

3

我已经使用boto库为我的一些项目实例化了新的 EC2 实例,然后在新 EC2 系统启动后使用结构执行配置。

要使用它们,您首先需要为亚马逊本身创建访问令牌。这些用于 boto 的令牌被放置到您的源文件中并在connectEC2 实例的方法中使用,或者您可以将它们放置到.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 )

完成此操作后,一个新实例应开始在您的 Amazon 控制面板中启动。您需要检查实例的状态,一旦它处于某种running状态,您就可以使用 Fabric 来配置实例。

with settings( host_string="ec2-user@%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 的更受控制的方法是通过 fab 文件。这些在 Fabric 文档中得到了更好的解释。

以上是我用来根据需要自动创建和设置实例的方法,因此请调整代码以适合您的情况。

于 2013-04-09T23:09:53.593 回答