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

猜你喜欢

转载自blog.csdn.net/wuyongpeng0912/article/details/51925844