加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

OpenStack虚拟机如何获取metadata

发布时间:2018-10-13 01:09:05 所属栏目:站长百科 来源:佚名
导读:技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战 1. 关于OpenStack metadata处事 我们知道OpenStack假造机是通过cloud-init完成初始化设置,好比网卡设置、hostname、初始化暗码以及密钥设置等。cloud-init是运行在假造机内部的一

前面已经先容了OpenStack假造机从Nova Metadata处事获取metadata的进程。偶然辰我们也许必要调试假造机的metadata信息,验证转达的数据是否正确,而又嫌贫困不但愿进入假造机内部去调试。有什么要领可以或许直接挪用nova-api-metadata处事获取假造机信息呢。

按照前面先容的道理,我写了两个剧本实现:

第一个Python剧本sign_instance.py用于天生secret:

  1. sign_instance.py 
  2.  
  3. import six 
  4. import sys 
  5. import hmac 
  6. import hashlib 
  7.  
  8. def sign_instance_id(instance_id, secret=''): 
  9.     if isinstance(secret, six.text_type): 
  10.         secret = secret.encode('utf-8') 
  11.     if isinstance(instance_id, six.text_type): 
  12.         instance_id = instance_id.encode('utf-8') 
  13.     return hmac.new(secret, instance_id, hashlib.sha256).hexdigest() 
  14. print(sign_instance_id(sys.argv[1])) 

第二个bash剧本get_metadata.py实现获取假造机metadata:

  1. #!/bin/bash 
  2. metadata_server=http://192.168.1.16:8775 
  3. metadata_url=$metadata_server/openstack/latest 
  4. instance_id=$1 
  5. data=$2 
  6. if [[ -z $instance_id ]]; then echo "Usage: $0 <instance_id>" 
  7.     exit 1 
  8. fi tenant_id=$(nova show $instance_id | awk '/tenant_id/{print $4}') 
  9. sign_instance_id=$(python sign_instance.py $instance_id) 
  10. curl -sL -H "X-Instance-ID:$instance_id" -H "X-Instance-ID-Signature:$sign_instance_id" -H "X-Tenant-ID:$tenant_id"  $metadata_url/$data 

个中metadata_server为Nova Metadata处事地点。

用法如下:

  1. # ./get_metadata.sh daf32a70-42c9-4d30-8ec5-3a5d97582cff 
  2. meta_data.json 
  3. password 
  4. vendor_data.json 
  5. network_data.json 
  6. # ./get_metadata.sh daf32a70-42c9-4d30-8ec5-3a5d97582cff network_data.json | python -m json.tool 
  7.     "links": [ 
  8.         { 
  9.             "ethernet_mac_address": "fa:16:3e:e8:81:9b", 
  10.             "id": "tap28468932-9e", 
  11.             "mtu": 1450, 
  12.             "type": "ovs", 
  13.             "vif_id": "28468932-9ea0-43d0-b699-ba19bf65cae3" 
  14.         } 
  15.     ], 
  16.     "networks": [ 
  17.         { 
  18.             "id": "network0", 
  19.             "link": "tap28468932-9e", 
  20.             "network_id": "2c4b658c-f2a0-4a17-9ad2-c07e45e13a8a", 
  21.             "type": "ipv4_dhcp" 
  22.         } 
  23.     ], 
  24.     "services": [] 

5 总结

最后通过一张事变流图总结:

(编辑:湖南网)

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

热点阅读