什么是metadataopenstack的 metadata

Openstack: How to set image metadata with python API 0.11.0 in openstack grizzly ...
您当前位置: &
[ 所属分类
| 时间 2015 |
作者 红领巾 ]
I work with a DevStack
-Grizzly installation. I add an image with metadata [see the code] using Openstack
I use glance.images.create
and provide metadata by properties
argument. Unfortunately, the created image has no metadata (properties). image.get
prints NONE
import keystoneclient.v2_0.client as
import glanceclient
keystone = ksclient.Client (
=credentials [
'auth-url'
, username
=credentials [
'username'
=credentials [
'password'
, tenant_name
=credentials [
glance_endpoint = keystone.service_catalog.url_for (
service_type
endpoint_type
= 'publicURL'
glance = glanceclient.Client (
,glance_endpoint, token
=keystone.auth_token )
image_name
= "test-cirros"
image_file
= "cirros.img"
with open (
image_file )
image = glance.images.create (
=image_name, is_public
=True, disk_format
, container_format
=fimage, properties = {
, "'bbbbbb"
print image.get (
prints NONE
Is there other way of setting image metadata?
Custom Properties != metadata, so the horizon does not display them and image.get returns empty hash.
To grab the metadata, I need to use nova client (API version 1.1 — nova.images.get(image.id).metadata
from novaclient import client as
novaclient
nova = novaclient.Client (
, auth_url
=credentials [
'auth-url'
, username
=credentials [
'username'
=credentials [
'password'
, project_id
=credentials [
with open (
image_file )
image = glance.images.create (
=image_name, is_public
=True, disk_format
, container_format
=fimage, properties = {
, "'bbbbbb"
print nova.images.get (
image.id )
# prints the correct metadata
Via: /questions//how-to-set-image-metadata-with-python-api-0-11-0-in-openstack-grizzly
本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
总有人在你切一盘水果时秒杀一道数学题,总有人在你调整愤怒的小鸟弹射角度时记住一个单词,总有人在你打一盘dota的时间内看完一章教材,总有人在你打一局2K的时间里完成一套阅读题,总有人在你与他人闲聊时听一段VOA,总有人在你熟睡时回想一天的得失,总有人比你跑得快,你还会虚度光阴么?
手机客户端
,专注代码审计及安全周边编程,转载请注明出处:http://www.codesec.net
转载文章如有侵权,请邮件 admin[at]codesec.netOpenStack 部署运维实战_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
OpenStack 部署运维实战
上传于||文档简介
&&大​数​据​云​计​算​部​署​运​维​解​决​方​案
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩10页未读,继续阅读
你可能喜欢什么是openstack的 metadata_百度知道
什么是openstack的 metadata
提问者采纳
在除了openstack的其他场合也经常会碰到,可以设定每一个instance 的参数metadata字面上是元数据,是提供一个机制给用户,是一个不容易理解的概念。openstack里的metadata
来自团队:
其他类似问题
为您推荐:
openstack的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁什么是openstack的 metadata
metadata字面上是元数据,是一个不容易理解的概念。在除了openstack的其他场合也经常会碰到。openstack里的metadata,是提供一个机制给用户,可以设定每一个instance 的参数。
具体可以参见openstack的相关api和以下的蓝图:
比如你想给instance设置某个属性,比如主机名。metadata的一个重要应用,是设置每个instance的ssh公钥。公钥的设置有两种方式:
1、创建instance时注入文件镜像
2、启动instance后,通过metadata获取,然后用脚本写入
第二种方式更加灵活,可以给非root用户注入公钥。以下是获取ssh key的代码片段:
# Fetch public key using HTTP
ATTEMPTS=10
while [ ! -f /root/.ssh/authorized_keys ]; do
curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key & /tmp/aws-key 2&/dev/null
if [ \$? -eq 0 ]; then
cat /tmp/aws-key && /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
restorecon /root/.ssh/authorized_keys
rm -f /tmp/aws-key
echo "Successfully retrieved AWS public key from instance metadata"
FAILED=\$((\$FAILED + 1))
if [ \$FAILED -ge \$ATTEMPTS ]; then
echo "Failed to retrieve AWS public key after \$FAILED attempts, quitting"
echo "Could not retrieve AWS public key (attempt #\$FAILED/\$ATTEMPTS), retrying in 5 seconds..."
可以看到,获取metadata的api接口是:
http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
可是,这个IP地址,在我们 openstack 是不存在的。为什么可以获取到metadata呢?
这是由于Amazon的原因,最早metadata是亚马逊提出来的,参见:
/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html
后来很多人给亚马逊定制了一些操作系统的镜像,比如 ubuntu, fedora, centos 等等,而且将里面获取 metadta 的api地址也写死了。所以opentack为了兼容,保留了这个地址 169.254.169.254。然后通过iptables nat映射到真实的api上:
iptables -A nova-network-PREROUTING -d 169.254.169.254/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.0.4:8775
使用metadata会带来便利,但是经常碰到的一个问题是,metadata获取不成功,导致instance启动很慢,并且获取失败会导致ssh key等功能设置失效,刚才获取ssh的代码片段中,就是尝试10次。需要注意的是:
1、在 network 上,正确设置相关参数,在 /etc/nova/nova.conf 里配置:
metadata_host=10.0.0.4
这里的 10.0.0.4 是api所在的内网地址
2、network上,要能够连接这个api地址 10.0.0.4
3、由于 api 判断instance是通过fix ip 来判断的,所以instance的fix ip地址段,一定要能够正确连接 api 所在 ip, 并且没有经过 nat 地址转换。否则不能正确获取instance 的metadata
openstack 的 metadata获取,我修正了一个bug:
https://review.openstack.org/#/c/5961/
https://code.launchpad.net/bugs/968453
但是,在某些场合,管理地址分开的情况下,还有bug, 需要继续改进:
https://bugs.launchpad.net/nova/+bug/982356
此条目发表在分类目录。将加入收藏夹。

我要回帖

更多关于 什么是metadata 的文章

 

随机推荐