天道酬勤,学无止境

Launch Openstack Instances using python-boto

I am trying to launch instances on opensatck setup with multiple networks configured using python-boto.

But I got following error,

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>

My code is like here,

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')

The above is working fine for single network configured to openstack.

Note: run_instances doesn't have keyword argument for network-id.

Where I made a mistake or how to fix it? or is it bug in python-boto?

Advance in Thanks.

评论

I believe that this isn't a bug of boto, which was built to communicate with the AWS-API. While most of the EC2-AWS functionality work well with the EC2-OpenStack API, some features are not implemented and are answered with a HTTP-Error 500 or 400.

AWS use the VPC (Virtual Private Cloud) as Network and an Availability Zone as Subnet. Both have a default setting, which is taken if there is no further specification when creating a new instance. But in OpenStack I can't see a possibility to mark a Network and a Subnet as default.

In my attempts, neither private_ip_address nor subnet_id works to specify a network/subnet at run_instances() if there are more than one at OpenStack.

Edit: if you only have one network/subnet, the following code works fine with boto at trystack.org:

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")

Have you tried? :

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
)

then

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

Amazon uses this for VPC networks? Are you running a VPC?

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • OpenStack简介
    OpenStack 简介 OpenStack是一个美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权,并且是一个自由软件和开放源代码项目。 OpenStack是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。 OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(简称IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文希望通过提供必要的指导信息,帮助大家利用OpenStack前端来设置及管理自己的公共云或私有云。 OpenStack 是由 Rackspace 和 NASA 共同开发的云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS)。OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspack 开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack 是开源项目,除了有 Rackspace 和 NASA 的大力支持外,后面还有包括
  • OpenStack源码阅读-创建虚拟机(二)
    上篇内容主要分析了下创建虚拟机从点击按钮到发送http请求部分源码。这篇文章是本系列的第二篇文章,按照内容来说,这篇内容更多的在说nova api,和创建虚拟机的关系实在不大。不过这边文章能帮助大家更清晰的理解restful架构、wsgi以及openstack 如何构建api接口的。文中涉及东西很多,但都是必要的铺垫,有说的不对的地方,欢迎大家指出,欢迎大家拍砖!nova api这部分源码主要在两个地方:nova源码 /usr/lib/python2.7/site-packages/novaopenstack服务管理源码 /usr/lib/python2.7/site-packages/oslo_service首先,在开始阅读源码之前,需要先有几个铺垫。restrestful在openstack中大家应该是听得比较多了。rest是Roy Thomas Fielding在2000年的博士论文中提出的。如果大家想深入理解rest是什么,相比于网上去搜索答案,不如看下那篇博士论文。这里我们为大家准备了一份他的中文版的博士论文,大家扫描下方微信公众号二维码,回复fuai_rest即可获取。现在网上一搜restful是什么?会出来很多的解释,很多术语都很专业,很多人都是看得云里雾里的。之前在网上看到一篇形象的解释,现在放在这大家理解理解:没有用rest1POST /users/getuser
  • 多节点OpenStack Charms 部署指南0.0.1.dev299--15--OpenStack 实例高可用
    参考文档: 《Instance high availability》 Introduction: Deploying OpenStack on MAAS 1.9+ with Juju 概述 从20.05 Charm版本开始,可以部署Masakari来为使用共享存储实例的云提供自动实例恢复。提供以下功能: 1 撤离实例(自OpenStack Stein开始受支持) 如果系统管理程序软件发生故障,则会关闭关联的计算节点,并在另一个系统管理程序上启动实例映像。 2 重新启动实例(自OpenStack Ussuri起受支持) 失败的实例可以在其当前的管理程序上重新启动 注意: 在Charmed OpenStack上启用Masakari时,需要MAAS。 需要的软件 安装配置Masakari所需的软件: sudo snap install openstackclients 验证segment子命令是否可用(由python-masakariclient插件提供): openstack segment --help 重要提示: 如果segment子命令不可用,则需要openstackclients snap的更新版本。例如,您可能需要使用“ edge”channel:sudo snap refresh openstackclients --channel=edge。 实例疏散机制
  • Kali Linux之OpenStack部署(1)——单节点部署(超详细,干货 !!)
      Kali Linux 之OpenStack单节点部署   OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权的开源代码项目。   OpenStack为私有云和公有云提供可扩展的弹性的云计算服务。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。   5个Openstack的重要构成部分:   1.Nova - 计算服务   2.Swift - 存储服务   3.Glance - 镜像服务   4.Keystone - 认证服务   5.Horizon - UI服务                 OpenStack基本构架             Keystone、Dashboard与Openstack部分交互   参考资料来源:   1. OpenStack百度百科   2. 云计算快速入门之OpenStack及其构成简介   以上,便是博主对大三下学期《OpenStack云平台部署与高可用》课程做的一个简要的介绍,原本博主是尝试使用Centos7来搭建OpenStack的:                     图 为企业老师提供教程   但在实践的过程中发现,是异常的繁琐的事
  • OpenStack(kilo)界面dashboard的二次开发(一)-增加Panel
    入行到现在对openstack的界面进行过一些定制,现在进行个梳理总结。博文中如有说得不对的地方请大家谅解,同时欢迎大家指正,共同提升。基本认识增加Panel一、基本认识:openstack的dashboard是允许用户管理openstack资源和服务的一个web接口。openstack的界面相关的代码有三部分:1、各类控件的基类,页面的通用模板等1/usr/lib/python2.7/site-packages/horizon2、界面具体样式,数据获取等1/usr/share/openstack-dashboard3、还有个容易被忽略的,登录认证界面1/usr/lib/python2.7/site-packages/openstack_authopenstack的菜单总共分为三级,Dashboard、Panelgroup、Panel,分别如下图标记1/2/3所示:有了以上认识,接下来就看看如何增加Panel二、增加Panel要增加一个panel首先得简单看看代码结构,进入/usr/share/openstack-dashbaord/openstack_dashboard/dashboards目录,会看到如下的结构:1|--__init__.py2|--admin3|--project4|--identity5|--router6|-
  • openstack虚拟机迁移的操作记录
    需求说明:计算节点linux-node1.openstack:192.168.1.8 计算节点linux-node2.openstack:192.168.1.17这两个计算节点在同一个控制节点下(192.168.1.8既是控制节点,也是其中一个计算节点),现在需要将linux-node1.openstack上的虚拟机kvm-server005迁移到liunx-node2.openstack上。一、openstack的虚拟机线下迁移(”冷迁移“,迁移前关闭虚拟机)操作记录如下:linux-node1.openstack上的操作:1)查看虚拟机[root@linux-node1 src]# source admin-openrc.sh[root@linux-node1 src]# nova list+--------------------------------------+----------------------------+--------+------------+-------------+--------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+--------------------
  • Openstack用命令创建实例
    目录 1. 获取项目列表 2. 获取实例类型列表 3. 获取镜像列表 4. 获取网络列表 5. 获取安全组列表 6. 执行对应项目的openrc文件,这一步很重要 7. 命令创建实例 8. 不登陆dashboard,获取虚拟机的vnc界面 1. 获取项目列表 . admin-openrc openstack project list 2. 获取实例类型列表 openstack flavor list 3. 获取镜像列表 openstack image list 4. 获取网络列表 openstack network list 5. 获取安全组列表 # 这里根据【项目ID】过滤出需要的安全组 openstack security group list | grep dc4412f641ec4717999a331b4d9fe12e 6. 执行对应项目的openrc文件,这一步很重要 # 由于创建实例的时候,无法传入项目ID,所以这里创建的时候,要先执行项目的openrc文件 # 由于创建实例的时候,无法传入项目ID,所以这里创建的时候,要先执行项目的openrc文件 # 由于创建实例的时候,无法传入项目ID,所以这里创建的时候,要先执行项目的openrc文件 # 由于创建实例的时候,无法传入项目ID,所以这里创建的时候,要先执行项目的openrc文件 # . sunsh-openrc
  • OpenStack(kilo)界面dashboard的二次开发(四)-国际化
    openstack界面支持英语、简体中文、繁体中文等多种语言。用户可以在用户设置中进行设置。如果要对openstack进行二次开发,那么就一定要对界面上的标题、提示的内容等进行修改。国际化看下面两幅图,分别是简体中文、English的实例页面: openstack的界面采用的是django的架构,django国际化就是开发者对需要翻译的字符串进行标记,并对相应的字符串进行翻译。进入/usr/share/openstack-dashboard/openstack_dashboard/dashboards/project /instances目录,并打开panel.py: 1from django.utils.translation import ugettext_lazy as _ 2 3import horizon 4 5from openstack_dashboard.dashboards.project import dashboard 6 7 8class Instances(horizon.Panel): 9 name = _("Instances")10 slug = 'instances'11 permissions = ('openstack.services.compute',)121314dashboard.Project.register(Instances
  • 错误:在openstack pike devstack上创建实例时没有建立sql_connection参数(Error: No sql_connection parameter is established when creating instances on openstack pike devstack)
    问题 我已经通过以下链接在我的 Ubuntu 16.04 上成功安装了 Openstack Devstack pike:https://www.mirantis.com/blog/how-to-install-openstack-on-your-local-machine-using-devstack/。 当我尝试创建一个实例时,我得到 No sql_connection 参数被建立为错误。 我检查了 /etc/nova/nova.conf 和数据库配置如下: [数据库]连接=mysql+pymysql://root:mypassword@127.0.0.1/nova_cell0?charset=utf8 [api_database] connection = mysql+pymysql://root:mypassword@127.0.0.1/nova_api?charset=utf8 此外我没有找到与 openstack 相关的日志所在的位置。 我只访问了 /opt/stack/logs/stack.sh.log 并且它没有任何进程。 我该如何解决这个问题? 如果有人能帮我解决它,我将不胜感激。 回答1 我在 Devstack Pike 上遇到了这个问题,当我想创建一个 VM(从 HOT 模板)将它连接到一个已经存在的网络( public ,默认情况下存在。)(您可以在(至少
  • Terraform stalls while trying to get IP addresses of multiple instances?
    So I am using terraform to provision ec2 instances and openstack instances. I am trying to reference the IP addresses of the instances I am creating because I need to run commands that use them (to set up consul). However after adding references to these variables terraform just stalls out and does absolutely nothing after I run a terraform apply or terraform plan: Here is a sample of the resource block for what I am trying to run: resource "aws_instance" "consul" { count = 3 ami = "ami-ce5a9fa3" instance_type = "t2.micro" key_name = "ansible_aws" tags { Name = "consul" } connection { user =
  • Error: No sql_connection parameter is established when creating instances on openstack pike devstack
    I've successfully installed Openstack Devstack pike on my Ubuntu 16.04 by following this link: https://www.mirantis.com/blog/how-to-install-openstack-on-your-local-machine-using-devstack/. when i tried to create an instance i got No sql_connection parameter is established as an error. I've checked /etc/nova/nova.conf and database configuration was as following: [database] connection = mysql+pymysql://root:mypassword@127.0.0.1/nova_cell0?charset=utf8 [api_database] connection = mysql+pymysql://root:mypassword@127.0.0.1/nova_api?charset=utf8 Besides i didn't find where the logs related to
  • Terraform 在尝试获取多个实例的 IP 地址时停顿?(Terraform stalls while trying to get IP addresses of multiple instances?)
    问题 所以我使用 terraform 来配置 ec2 实例和 openstack 实例。 我正在尝试引用我正在创建的实例的 IP 地址,因为我需要运行使用它们的命令(以设置 consul)。 但是,在添加对这些变量的引用后,terraform 会停止运行,并且在我运行terraform apply或terraform plan后完全没有任何反应: 这是我尝试运行的资源块示例: resource "aws_instance" "consul" { count = 3 ami = "ami-ce5a9fa3" instance_type = "t2.micro" key_name = "ansible_aws" tags { Name = "consul" } connection { user = "ubuntu" private_key="${file("/home/ubuntu/.ssh/id_rsa")}" agent = true timeout = "3m" } provisioner "remote-exec" { inline = [ "sudo apt-get update", "sudo apt-get install -y curl", "echo ${aws_instance.consul.0.private_ip} >> /home/ubuntu/test
  • OpenStack Queens版搭建详解
    目录 OpenStack Queens版搭建详解 1.基础环境配置 1.2 节点网络规划 1.3 关闭防火墙 1.4 配置yum源 1.5 配置节点IP 1.6 配置主机名 1.7 配置主机名解析(hosts) 1.8 配置NTP服务 2.安装基础软件包 2.1 安装OpenStack软件包 2.2 安装mariadb数据库 2.3 安装RabbitMQ消息队列 2.4 安装Memcached缓存数据库 2.5 安装Etcd服务 3 安装OpenStack服务 3.1 安装keystone服务 3.1.1 认证服务概述 3.1.2 安装和配置keystone 3.1.3 创建项目和用户 3.1.4 验证认证服务操作 3.1.5 创建客户端环境脚本 3.2 安装Glance服务 3.2.1 镜像服务概述 3.2.2 创建glance数据库 3.2.3 安装和配置组件 3.2.4 验证操作 3.3 安装compute服务(nova) 3.3.1 计算服务概述 3.3.2 安装和配置控制节点 3.3.3 安装和配置计算节点 3.3.4 验证计算服务操作 3.4 安装neutron服务 3.4.1 网络服务概述 3.4.3 安装和配置controller节点 3.4.4 安装和配置compute节点 3.5 安装Horizon服务 3.5.1 安装和配置组件 3.5.2 完成安装启动服务
  • 【OpenStack】菜鸟学OpenStack之部署Train(1)
    菜鸟学OpenStack之部署Train(1) 0. 在开始之前OpenStack 概念架构OpenStack 逻辑架构OpenStack组件描述OpenStack部署要点OpenStack示例架构硬件需求控制器计算块设备存储对象存储 网络网络类型1:公共网络网络类型2:私有网络 其他OpenStack架构 本文以 OpenStack Train版本作为入门案例,以官方文档作为教程进行安装部署。物理主机节点的操作系统选择 CentOS 8系统。OpenStack由多个服务组件构成,既可以选择全部服务组件,也可以选择部分服务组件进行安装部署。 在安装之前需要考虑的几个问题: 需要使用哪几个服务组件,使得架构达到最优,既不臃肿又不单薄?需要使用哪些方法和策略保证架构安全?需要使用哪些工具或者技术使OpenStack的安装部署自动化,且管理简单? 0. 在开始之前 OpenStack的官方文档地址为:https://docs.openstack.org/ussuri/ OpenStack 概念架构 OpenStack 逻辑架构 OpenStack组件描述 服务项目名称描述DashboardHorizon提供了一个基于web的自服务门户,与OpenStack底层服务交互,诸如启动一个实例,分配IP地址以及配置访问控制ComputeNova在OpenStack环境中计算实例的生命周期管理
  • Openstack七大组件介绍
    Openstack七大组件介绍 OpenStack是一套laas解决方案 OpenStack是一个开源的云计算管理平台 以Apache许可证为授权 Horizon组件 ——Horizon为OpenStack服务的Web控制面板,可以管理实例、镜像、创建密钥对,对实例添加卷、操作Swift容器等。 ——Horizon具有如下一些特点: ——实力管理:创建、终止实例,查看终端日志,VNC连接,添加卷等 ——访问与安全管理:创建安全群组,管理密钥对,设置浮动IP等 ——镜像管理:编辑或删除镜像 ——管理用户、配额及项目用途 Keystone组件 ——认证组件 ——为其他服务提供认证和授权的集中身份管理服务 ——也提供了集中的目录服务 ——也支持多种身份认证模式,如密码认证、令牌认证、以及AWS(亚马逊Web服务)登录 ——为用户和其他服务提供了SSO认证服务 Nova组件 ——计算组件 ——在节点上用于管理虚拟机的服务 ——Nova是一个分布式的服务,能够与Keystone交互实现认证,与Glance交互实现镜像管理 ——Nova被设计成在标准硬件上能够进行水平扩展 ——启动实例时,如果有则需要下载镜像 Glance组件 ——镜像管理组件 ——扮演虚拟机镜像注册的角色 ——允许用户为直接存储拷贝服务器镜像 ——这些镜像可以用于新建虚拟机的模板 Swift组件 ——这是对象存储的组件 —
  • openstack horizon 二次 开发 示例
    一、环境 [root@localhost horizon]# cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core) [root@localhost horizon]# python -V Python 2.7.5 [root@localhost horizon]# pip -V pip 20.2 from /usr/lib/python2.7/site-packages/pip (python 2.7) [root@localhost horizon]# python3 -V Python 3.7.7 [root@localhost horizon]# pip3 -V pip 19.2.3 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7) [root@localhost horizon]# tox --version 3.18.0 imported from /usr/lib/python2.7/site-packages/tox/__init__.pyc [root@localhost horizon]# pip list | grep horizon horizon 16.2.0 二、步骤
  • Private network creation with Terraform on OVH's Openstack
    I'm trying to deploy some Openstack instances on OVH's Public Cloud using Terraform. The point is (for now) to have two instances on two networks. Each instance should have an external IP address (which isn't a problem) and a internal IP address on a private network (which causes me troubles). My terraform file is : resource "openstack_compute_keypair_v2" "keypair" { provider = "openstack.ovh" name = "jpin" public_key = "${file("~/.ssh/id_rsa.pub")}" region = "GRA3" } resource "openstack_networking_network_v2" "network_1" { provider = "openstack.ovh" name = "network_1" admin_state_up = "true"
  • Apache Spark: “failed to launch org.apache.spark.deploy.worker.Worker” or Master
    I have created a Spark cluster on Openstack running on Ubuntu14.04 with 8gb of ram. I created two virtual machines with 3gb each (keeping 2 gb for the parent OS). Further, i create a master and 2 workers from first virtual machine and 3 workers from second machine. The spark-env.sh file has basic setting with export SPARK_MASTER_IP=10.0.0.30 export SPARK_WORKER_INSTANCES=2 export SPARK_WORKER_MEMORY=1g export SPARK_WORKER_CORES=1 Whenever i deploy the cluster with start-all.sh, i get "failed to launch org.apache.spark.deploy.worker.Worker" and some times "failed to launch org.apache.spark
  • openstack(train)单机版安装教程
    系列文章目录 openstack(train)单机版安装教程 openstack(train)创建网络与虚拟机 目录 系列文章目录openstack简介openstack架构说明整体架构主要模块介绍 安装教程环境准备下载相关安装包部署openstack修改openstack配置修改实例存储位置修改镜像存储位置 问题与解决openstack 日志目录列表openstack 配置目录列表openstack 服务端口号列表openstack组件使用的默认端口号非openstack组件使用的默认端口号 参考 openstack简介 Openstack是一个控制着大量计算能力、存储、乃至于整个数据中心网络资源的云操作系统,通过Dashboard这个Web界面,让管理员可以控制、赋予他们的用户去提供资源的权限(即:能够通过Dashboard控制整个Openstack云计算平台的运作)。 作为IaaS层的云操作系统,OpenStack为虚拟机提供并管理三大类资源:计算、网络和存储。 openstack官网文档地址:https://docs.openstack.org/ openstack中文文档地址:https://docs.openstack.org/zh_CN/ openstack架构说明 整体架构 OpenStack是由一系列具有RESTful接口的Web服务所实现的,是一系列组件服务集合
  • 在 OVH 的 Openstack 上使用 Terraform 创建专用网络(Private network creation with Terraform on OVH's Openstack)
    问题 我正在尝试使用 Terraform 在 OVH 的公共云上部署一些 Openstack 实例。 关键是(目前)在两个网络上有两个实例。 每个实例都应该有一个外部 IP 地址(这不是问题)和一个私有网络上的内部 IP 地址(这会给我带来麻烦)。 我的地形文件是: resource "openstack_compute_keypair_v2" "keypair" { provider = "openstack.ovh" name = "jpin" public_key = "${file("~/.ssh/id_rsa.pub")}" region = "GRA3" } resource "openstack_networking_network_v2" "network_1" { provider = "openstack.ovh" name = "network_1" admin_state_up = "true" region = "GRA3" } resource "openstack_networking_subnet_v2" "subnet_1" { provider = "openstack.ovh" name = "subnet_1" network_id = "${openstack_networking_network_v2.network_1.id}"