Store metadata on a configuration drive

    你可以通过配置OpenStack把metadata元数据写入到一个特定的配置驱动中,这样在一个实例启动时,就可以把这个配置驱动附加到这个实例上。实例可以(mount)加载这个驱动并读取文件,通过metadata服务来获取有用的信息。metadata(元数据)不同于用户数据。
    使用配置驱动器(configuration drive)的一个实例,就是当你没有通过DHCP来指定实例的IP地址时,可以通过传递网络配置来实现。例如,你可以先通过配置驱动器(configuration drive),来给一个实例传递IP地址配置,这样在配置这个实例的网络设置之前,就可以先加载和访问这个实例了。
    任何可以挂载ISO9660或者VFAT文件系统的现代客户操作系统,都可以使用配置驱动器(configuration drive)。

    第一章   要求和指导

    使用配置驱动器(configuration drive),对于compute host和image,你必须遵循以下要求。
   
    Compute host requirements
    
  •     下面的虚拟机监控程序(Hypervisors)支持配置驱动:libvirt,XenServer,hyper-v,VMware。此外,裸金属服务支持配置驱动器。
  •     和libvirt,XenServer,VMware一起使用配置驱动,您必须首先在每个计算主机上安装genisoimage包。否则,实例将不会正确引导。 当你安装genisoimage程序时,使用mkisofs_cmd标志位 来设置路径。如果genisoimage与nova-compute服务在同一路径下,你就不需要设置此标志了。
  •     和hyper-v一起使用配置驱动时,你必须设置mkisofs_cmd值的完整路径,来完成mkisofs.exe程序的安装。此外,您必须在hyperv配置部分设置qemu_img_cmd的值,为qemu-img命令安装提供完整路径 。
  •     和裸金属服务一起使用配置驱动时,你不需要准备任何东西因为裸金属服务已将配置驱动器(configuration drive)配置正确

    Image requirements
    
  •     由最新版本的cloud-init包制作的镜像,可以通过配置驱动器(configuration drive) 自动的访问元数据metadata。 cloud-init包版本0.7.1,工作在Ubuntu,Fedora基础镜像(如Red Hat Enterprise Linux)和openSUSE的基础镜像 (如SUSE Linux Enterprise Server)。
  •     如果一个镜像没有安装 cloud-init包,你必须定制镜像运行脚本,在引导启动时挂载配置驱动器(configuration drive) ,从这个驱动器中读取数据,并采取适当的措施,比如添加一个帐户的公钥。你可以在configuration drive中阅读到更多关于数据是如何组织的细节。
  •     如果你把Xen与一个配置驱动器一起使用,要使用xenapi_disable_agent配置参数来禁用代理服务。
    
    Guidelines

  •     不要配置驱动器中,依赖EC2的metadata元数据,因为这些内容可能在将来的版本中被删除。
  •     当你创建镜像,来访问配置驱动器的数据和openstack目录下的多个目录使,要选择所支持的最新日期的API版本。

   第二章   使能和访问配置驱动器(configuration drive)

    1,为了使能配置驱动器(configuration drive),把--config-drive true参数传入到nova boot命令。
    以下例子使能配置驱动器(configuration drive),并传入用户数据,两个文件,两个元数据键值对,这些都是可以从配置驱动器(configuration drive) 中访问的。
$ nova boot --config-drive true --image my-image-name --key-name mykey \ 
--flavor 1 --user-data ./my-user-data.txt myinstance \ 
--file /etc/network/interfaces=/home/myuser/instance-interfaces \ 
--file known_hosts=/home/myuser/.ssh/known_hosts \ 
--meta role=webservers --meta essential=false
    你也可以在 /etc/nova/nova.conf配置文件中,设置以下选择项,来设置计算服务一直可以创建配置驱动器(configuration drive):
force_config_drive=true
    注意:如果一个普通用户user,把--config-drive true参数传入到nova boot命令,那么administrator不能禁用配置驱动器(configuration drive)。

    2,如果你的客户操作系统支持通过标签来访问磁盘,你可以挂载配置驱动作为/dev/disk/by-label/configurationDriveVolumeLabel设备。在下面的例子中,配置驱动器有config-2卷的标签:
# mkdir -p /mnt/config
# mount /dev/disk/by-label/config-2 /mnt/config
注意:确保使用最新版本的CirrOS来提供配置驱动器(configuration drive) 支持。 [CirrOS镜像,目前最新版本是0.3.4,网址:http://download.cirros-cloud.net/]
          如果你的客户机操作系统没有使用udev,那么/dev/disk/by-label目录不存在。 [udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。]
          你可以使用blkid命令去识别块设备对应的配置驱动器(configuration drive)。例如:当你使用m1.tiny的flavor来引导启动CirrOS镜像时,设备是/dev/vdb:
# blkid -t LABEL="config-2" -odevice
/dev/vdb
          一旦识别,你就可以mount这个设备:
# mkdir -p /mnt/config
# mount /dev/vdb /mnt/config


    第二章第一节  配置驱动的内容(Configuration drive contents)

    配置驱动器(configuration drive)的内容,如下例:
ec2/2009-04-04/meta-data.json
ec2/2009-04-04/user-data
ec2/latest/meta-data.json
ec2/latest/user-data
openstack/2012-08-10/meta_data.json
openstack/2012-08-10/user_data
openstack/content
openstack/content/0000
openstack/content/0001
openstack/latest/meta_data.json
openstack/latest/user_data
    出现在配置驱动器(configuration drive)中的文件,取决于你传入nova boot命令的参数。

    第二章第二节    OpenStack metadata format

    以下例子展示了openstack/2012-08-10/meta_data.json文件和openstack/latest/meta_data.json文件。这些文件都是相同的。文件内容的格式只是为了增加可读性。
{
    "availability_zone": "nova",
    "files": [
        {
            "content_path": "/content/0000",
            "path": "/etc/network/interfaces"
        },
        {
            "content_path": "/content/0001",
            "path": "known_hosts"
        }
    ],
    "hostname": "test.novalocal",
    "launch_index": 0,
    "name": "test",
    "meta": {
        "role": "webservers",
        "essential": "false"
    },
    "public_keys": {
        "mykey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDBqUfVvCSez0/Wfpd8dLLgZXV9GtXQ7hnMN+Z0OWQUyebVEHey1CXuin0uY1cAJMhUq8j98SiW+cU0sU4J3x5l2+xi1bodDm1BtFWVeLIOQINpfV1n8fKjHB+ynPpe1F6tMDvrFGUlJs44t30BrujMXBe8Rq44cCk6wqyjATA3rQ== Generated by Nova\n"
    },
    "uuid": "83679162-1378-4288-a2d4-70e13ec132aa"}
    注意这些影响, --file /etc/network/interfaces=/home/myuser/instance-interfaces参数是传入到nova boot命令的。这些文件的内容包含在配置驱动器(configuration drive) 的openstack/content/0000文件中,在meta_data.json文件中,路径指定为/etc/network/interfaces。

    
    第二章第三节    EC2 metadata format

不常用,略。

   第二章第四节    User data

    只有当--user-data flag 和包含用户内容的文件,被传入到nova boot命令中的时候,openstack/2012-08-10/user_data, openstack/latest/user_data, ec2/2009-04-04/user-data, 和ec2/latest/user-data 文件,才会显示。

    第二章第五节   Configuration drive format

    配置驱动器的默认格式是ISO 9660文件系统。为了明确指定ISO 9660格式,可以在/etc/nova/nova.conf文件中填写如下一行:
config_drive_format=iso9660
    默认情况下,你不能把配置驱动器镜像作为一个CD驱动来替换磁盘驱动。为了添加CD驱动,可以在/etc/nova/nova.conf文件中填写如下一行:
config_drive_cdrom=true
    对于遗留原因,你可以配置的配置使用VFAT格式而不是ISO 9660。你不太可能需要VFAT格式因为ISO 9660是广泛支持多种操作系统。然而,为了使用VFAT驱动,可以在/etc/nova/nova.conf文件中填写如下一行:
config_drive_format=vfat
    如果你选择VFAT,配置驱动器大小为64 MB

注意:OpenStack的Liberty版本的compute,禁止在本地磁盘使用config_drive动态迁移,因为在libvirt的复制一个只读磁盘有bug。但是如果使用VFAT config_drive的格式,实时迁移可以进行。


链接:http://docs.openstack.org/user-guide/cli_config_drive.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章