我正在为一个新项目编写一个后端,在这个后端我想要一个控制器程序。
该项目是大学的网站,但我需要为每所大学提供一个新的Amazon EC2实例。我希望扩展尽可能轻松。
简而言之,我希望能够运行controller new harvard
并让它执行以下操作:
我已经阅读了一些关于boto和Fabric的内容,但没有任何关于如何开始的真正领导。
任何帮助都会受到大力赞赏。
答案 0 :(得分:3)
我已经使用boto库为我的一些项目实例化了新的EC2实例,然后在引导后使用fabric执行新EC2系统的配置。
要使用它们,首先需要为亚马逊自己创建访问令牌。对于boto,这些标记放在源文件中,并在EC2实例的connect
方法中使用,或者您可以将它们放入主目录中的.boto
文件中。后者更容易。
亚马逊需要的是:
根据以上信息,您将使用以上信息调用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命令,但是使用Fabric的更受控制的方法是通过fab文件。这些在Fabric文档中得到了更好的解释。
以上是我根据需要自动创建和设置实例的内容,因此请调整代码以适合您的需要。