實踐 config drive - 天天5分鐘玩轉 OpenStack(170)

若是 instance 沒法經過 metadata service 獲取 metadata(無 DHCP 或者 nova-api-metadata 服務),instance 還能夠經過 config drive 得到 metadata。json

 

config drive 是一個特殊的文件系統,OpenStack 會將 metadata 寫到 config drive,並在 instance 啓動時掛載給 instance。如過 instance 安裝了 cloud-init,config drive 會被自動 mount 並從中讀取 metadata,進而完成後續的初始化工做。api

接下來咱們將實踐 config-drive。ssh

 

配置

 

config drive 默認是 disable 的,因此首先得啓用。有兩種方法啓用 config drive:spa

  1. 啓動 instance 時指定 --config-drive truecode

  2. 在計算節點的 /etc/nova/nova.conf 中配置 force_config_drive = true,這樣部署到此計算節點的 instance 都會使用 config drive。咱們實驗中使用的就是這種方法。orm

config drive 支持兩種格式,iso9660 和 vfat,默認是 iso9660,但這會致使 instance 沒法在線遷移,必須設置成config_drive_format=vfat 才能在線遷移,這一點須要注意。ci

配置完成後,重啓 nova-compute 服務。部署

 

過程分析

 

部署一個新的 cirros instance c2,咱們先到計算節點的 instances 目錄下看看 c1 與 c2 的區別。it

c2 的目錄下會多一個 disk.config 文件,這就是 config drive。經過virsh edit 能夠看到 disk.config 已經掛載到 instance 上了。form

打開 c2 的控制檯,hostname 已經配置好,說明 metadata 拿到了。

爲了確保 metadata 不是從 nova-api-metadata 獲取,我已經提早關閉了 DHCP 服務,能夠看到當前 c2 是沒有 IP 的。

lsblk 查看塊設備,iso 設備 sr0 就是 config drive。

mount sr0,查看 config drive 的內容。

meta_data.json 中存放了 ssh public key, hostname 等信息。

instance 能夠經過 nova-api-metadata 或者 config drive 這兩種途徑拿到 metadata,如何使用這些 data 是 cloud-init 要完成的工做,下節咱們將開始詳細討論 cloud-init


相關文章
相關標籤/搜索