天天看點

Store metadata on a configuration drive

目錄
    • Requirements and guidelines
    • Enable and access the configuration drive
      • Configuration drive contents
      • OpenStack metadata format
      • EC2 metadata format
      • User data
      • Configuration drive format

    你可以通過配置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

繼續閱讀