加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_安阳站长网 (https://www.0372zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

OpenStack虚拟机如何获取metadata

发布时间:2018-08-16 13:04:06 所属栏目:建站 来源:佚名
导读:副标题#e# 技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 1. 关于OpenStack metadata服务 我们知道OpenStack虚拟机是通过cloud-init完成初始化配置,比如网卡配置、hostname、初始化密码以及密钥配置等。cloud-init是运行在虚拟

最终,neutron-metadata-agent会把虚拟机信息放到头部中,发送到Nova Metadata服务的头部信息如下:

  1. headers = { 
  2.     'X-Forwarded-For': req.headers.get('X-Forwarded-For'), 
  3.     'X-Instance-ID': instance_id, 
  4.     'X-Tenant-ID': tenant_id, 
  5.     'X-Instance-ID-Signature': self._sign_instance_id(instance_id) 

此时Nova Metadata就可以通过虚拟机的uuid查询metadata信息了,代码位于nova/api/metadata/base.py:

  1. def get_metadata_by_instance_id(instance_id, address, ctxt=None): 
  2.     ctxt = ctxt or context.get_admin_context() 
  3.     attrs = ['ec2_ids', 'flavor', 'info_cache', 
  4.              'metadata', 'system_metadata', 
  5.              'security_groups', 'keypairs', 
  6.              'device_metadata'] 
  7.     try: 
  8.         im = objects.InstanceMapping.get_by_instance_uuid(ctxt, instance_id) 
  9.     except exception.InstanceMappingNotFound: 
  10.         LOG.warning('Instance mapping for %(uuid)s not found; ' 
  11.                     'cell setup is incomplete', {'uuid': instance_id}) 
  12.         instance = objects.Instance.get_by_uuid(ctxt, instance_id, 
  13.                                                 expected_attrs=attrs) 
  14.         return InstanceMetadata(instance, address) 
  15.  
  16.     with context.target_cell(ctxt, im.cell_mapping) as cctxt: 
  17.         instance = objects.Instance.get_by_uuid(cctxt, instance_id, 
  18.                                                 expected_attrs=attrs) 
  19.         return InstanceMetadata(instance, address) 

5 在虚拟机外部如何获取虚拟机metadata

(编辑:网站开发网_安阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!