window 安裝Cloudbase-Init
window 下的初始化由Cloudbase-Init 提供, 其官方地址為 https://cloudbase.it/ 。在虛擬機中安裝該軟件,過程十分簡單。
官方文檔: https://cloudbase-init.readthedocs.io/en/latest/plugins.html
配置
軟件的配置文件為
C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Ini\cloudbase-init.conf
metadata_services 選項設置元數據獲取服務,ConfigDriveService 表示openstack 本地模式
metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService,
plugins 選項設置需要執行的插件
SetHostNamePlugin 更改主機名
etUserPasswordPlugin 更改主機密碼
ExtendVolumesPlugin 自動擴展磁盤空間(每次重啟均執行)
# What plugins to execute.
plugins=cloudbaseinit.plugins.common.mtu.MTUPlugin,
cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin
cloudbaseinit.plugins.windows.setuserpassword.SetUserPasswordPlugin
cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin
此外還需要設置允許重啟,允許使用cdrom
allow_reboot = true
元數據制作
ConfigDriveService 會識別lable 為 config-2 的光盤
并讀取其中 openstack/latest/meta_data.json 文件的數據
穿件seed 文件夾 ,并寫入數據
$ vim seed/openstack/latest/meta_data.json
{
"hostname": "test5",
"meta": {
"admin_pass": "6"
},
"uuid": "local-2"
}
- hostname: 設置的主機名稱
- admin_pass: 設置的用戶密碼
- uuid :即在uuid 不同時,才會執行初始化工作,故每次需要更改
使用genisoimage 指令封裝seed目錄下的數據為seed.iso
genisoimage -output seed.iso -volid config-2 -joliet -rock seed/
啟動虛擬機
掛載制作好的磁盤為
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw' cache='none'/>
<source file='./seed.iso'/>
<target dev='hdc' bus='ide'/>
</disk>
參考window
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Using+ConfigDrive+for+Metadata,+Userdata+and+Password#UsingConfigDriveforMetadata,UserdataandPassword-Contentofmeta_data.json(jsonencoded):
openstack 中使用metadata 的方式
https://docs.openstack.org/nova/latest/user/config-drive.html
http://www.voidcn.com/article/p-pqsebuws-pk.html