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

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