gushiren

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

https://www.ibm.com/developerworks/cn/cloud/library/1509_liukg_openstackmeta/

http://mathslinux.org/?p=591

http://blog.csdn.net/dingdingwolf/article/details/45745581

https://www.cnblogs.com/CloudMan6/p/6648039.html

http://xcodest.me/cloud-init-cause-vm-boot-slow.html

翻译官网

Compute使用虚拟机实例的元数据服务来检索特定于实例的数据。 实例访问http://169.254.169.254的元数据服务。 元数据服务支持两组API:一个OpenStack元数据API和一个兼容EC2的API。 这两个API都是按日期版本化的。

要检索OpenStack元数据API的受支持版本的列表,请向http://169.254.169.254/openstack发出GET请求:

$ curl http://169.254.169.254/openstack
2012-08-10
2013-04-04
2013-10-17
latest

要列出与EC2兼容的元数据API的受支持版本,请向http://169.254.169.254发出GET请求:

$ curl http://169.254.169.254
1.0
2007-01-19
2007-03-01
2007-08-29
2007-10-10
2007-12-15
2008-02-01
2008-09-01
2009-04-04
latest

OpenStack API的元数据以JSON格式分发。 要检索元数据,请发送GET请求:

$ curl http://169.254.169.254/openstack/2012-08-10/meta_data.json
{
   "uuid": "d8e02d56-2648-49a3-bf97-6be8f1204f38",
   "availability_zone": "nova",
   "hostname": "test.novalocal",
   "launch_index": 0,
   "meta": {
      "priority": "low",
      "role": "webserver"
   },
   "project_id": "f7ac731cc11f40efbc03a9f9e1d1d21f",
   "public_keys": {
       "mykey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDYVEprvtYJXVOBN0XNKV\
                 VRNCRX6BlnNbI+USLGais1sUWPwtSg7z9K9vhbYAPUZcq8c/s5S9dg5vTH\
                 bsiyPCIDOKyeHba4MUJq8Oh5b2i71/3BISpyxTBH/uZDHdslW2a+SrPDCe\
                 uMMoss9NFhBdKtDkdG9zyi0ibmCP6yMdEX8Q== Generated by Nova\n"
   },
   "name": "test"
}

实例还通过元数据服务检索用户数据(通过API调用中的user_data参数传递,或通过openstack服务器创建命令中的--user_data标志传递),通过向http://169.254.169.254/openstack/发出GET请求2012-08-10/ USER_DATA:

$ curl http://169.254.169.254/openstack/2012-08-10/user_data
#!/bin/bash
echo 'Extra user data here'

元数据服务具有与Amazon EC2元数据服务的2009-04-04版兼容的API。 这意味着为EC2设计的虚拟机映像可以与OpenStack一起正常工作。

EC2 API为每个元数据元素提供一个单独的URL。 通过获取http://169.254.169.254/2009-04-04/meta-data/的GET查询来检索这些元素的列表:

$ curl http://169.254.169.254/2009-04-04/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
kernel-id
local-hostname
local-ipv4
placement/
public-hostname
public-ipv4
public-keys/
ramdisk-id
reservation-id
security-groups
$ curl http://169.254.169.254/2009-04-04/meta-data/block-device-mapping/
ami
$ curl http://169.254.169.254/2009-04-04/meta-data/placement/
availability-zone
$ curl http://169.254.169.254/2009-04-04/meta-data/public-keys/
0=mykey

实例可以通过向http://169.254.169.254/2009-04-04/meta-data/public-keys/0/发出GET请求来检索公共SSH密钥(当用户请求新实例时,通过密钥对名称来标识)OpenSSH的键:

$ curl http://169.254.169.254/2009-04-04/meta-data/public-keys/0/openssh-key
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDYVEprvtYJXVOBN0XNKVVRNCRX6BlnNbI+US\
LGais1sUWPwtSg7z9K9vhbYAPUZcq8c/s5S9dg5vTHbsiyPCIDOKyeHba4MUJq8Oh5b2i71/3B\
ISpyxTBH/uZDHdslW2a+SrPDCeuMMoss9NFhBdKtDkdG9zyi0ibmCP6yMdEX8Q== Generated\
by Nova

元数据服务由nova-api服务或nova-api-metadata服务实现。请注意,nova-api-metadata服务通常只在多主机模式下运行,因为它检索实例特定的元数据。如果您正在运行nova-api服务,则必须将元数据作为/etc/nova/nova.conf中enabled_apis配置选项中列出的元素之一。默认的enabled_apis配置设置包括元数据服务,所以您不需要修改它。

主机访问169.254.169.254:80处的服务,并通过由nova-network服务建立的iptables规则将其转换为metadata_host:metadata_port。在多主机模式下,您可以将metadata_host设置为127.0.0.1。

对于要到达元数据服务的实例,nova-network服务必须将iptables配置为169.254.169.254地址的NAT端口80为metadata_host中指定的IP地址(默认为$ my_ip,即nova-network的IP地址服务)和/etc/nova/nova.conf中的metadata_port(默认为8775)中指定的端口。

 

posted on 2018-08-21 15:14  gushiren  阅读(941)  评论(0编辑  收藏  举报