【问题标题】:Launch Openstack Instances using python-boto使用 python-boto 启动 Openstack 实例
【发布时间】:2014-02-01 03:43:07
【问题描述】:

我正在尝试使用 python-boto 配置的多个网络在 opensatck 设置上启动实例。

但我得到以下错误,

EC2ResponseError: EC2ResponseError: 400 Bad Request <?xml version="1.0"?> <Response><Errors><Error><Code>NetworkAmbiguous</Code><Message>Multiple possible networks found, use a Network ID to be more specific.</Message></Error></Errors><RequestID>req-28b5a4e8-3838-4111-95db-337c5048716d</RequestID></Response>

我的代码是这样的,

from boto import ec2
ostack = ec2.connection.EC2Connection(
    ec2_access_key, ec2_secret_key, is_secure=False, port=8773, region='nova',
    path='/services/Cloud'
)

ostack.run_instances('ami-xxxxx', key_name='BotoTest')

对于配置为 openstack 的单个网络,上述工作正常。

注意:run_instances 没有 network-id 的关键字参数。

我在哪里犯了错误或如何解决?还是 python-boto 中的 bug?

提前致谢。

【问题讨论】:

  • right_aws ruby​​ 库ec2.launch_instances 相同的问题...正如你所说的,这是一个 api 问题
  • 尚未检查最新版本的 openstack。完成检查后会更新您。

标签: python amazon-ec2 boto openstack


【解决方案1】:

我相信这不是 boto 的错误,它是为与 AWS-API 通信而构建的。虽然大部分 EC2-AWS 功能都可以与 EC2-OpenStack API 很好地配合使用,但有些功能没有实现,并以 HTTP-Error 500 或 400 进行回答。

AWS 使用 VPC(虚拟私有云)作为网络,使用可用区作为子网。两者都有一个默认设置,如果在创建新实例时没有进一步的规范,则采用该设置。但是在 OpenStack 中,我看不到将网络和子网标记为默认值的可能性。

在我的尝试中,如果 OpenStack 中有多个网络/子网,private_ip_addresssubnet_id 都无法在 run_instances() 指定网络/子网。

编辑:如果您只有一个网络/子网,则以下代码可以在 trystack.org 上与 boto 一起正常工作:

import boto
conn = boto.connect_ec2_endpoint("http://8.21.28.222:8773/services/Cloud",aws_access_key_id='...',aws_secret_access_key='...')
new_instance = conn.run_instances("ami-00000020", key_name="trystack", security_groups=["default"], instance_type="m1.small")

【讨论】:

  • 是的,你是对的。但我试图覆盖它。很快就会更新这个问题:-)
  • 你能查一下here
  • 我发现 OpenStack EC2 API 没有过滤 run_instances 处的 vpc/subnet/network IDs
  • 应该只对icehouse启用。
【解决方案2】:

你试过了吗? :

from boto import ec2
ostack = ec2.connection.EC2Connection(
   ec2_access_key, ec2_secret_key, is_secure=False, port=8773, region='nova',
   path='/services/Cloud', debug=1
)

然后

ostack.run_instances('ami-xxxxx',  subnet_id='your network id', key_name='BotoTest')

亚马逊将其用于 VPC 网络?您是否在运行 VPC?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多