天天看點

openstack之win7鏡像初始化中繼資料user-data

cloudinit為我們提供了一個初始化雲主機的工具,但是大部分資料都是針對linux如何使用,對windows怎麼具體使用很少涉及(大概是因為很簡單,直接安裝就行,參考下面文章)

win7鏡像制作

openstack之cloudinit配置

完成上述工作之後,一般是需要進行鏡像的使用者名密碼設定,比如增加一個user并指定使用者所屬(Administrator/Guest),增加一個初始化程式,寫個腳本等等…

中繼資料

中繼資料可以自己定義,key-value,例如,我需要添加條測試資訊

nova meta set instance- testInfo=content
           

這個意思是說,我向主機instance-000添加一條中繼資料,這個中繼資料内容是{testInfo:content},如果添加成功,可以在 http://169.254.169.254/openstack/latest/meta_data.json 中看到meta中的資訊。目前我還不知道這個自己添加的資料有什麼用,如果手動做的話,我覺的應該在instance-000中寫一個腳本,去請求meta_data.json資料,然後解析json,擷取出testInfo,content,然後達到執行的目的。(這是目前的想法,也是最笨的方法)。cloudinit保留了admin_pass這個字段,建立主機時,直接使用它就可以設定密碼(使用者名,密碼,預設值是在cloudinit安裝路徑的.conf檔案裡,可以看到)

建立一個雲主機,設定網卡selfprovide(注意,使用cloudinit,必須要私網的,内部通信所需),指定初始密碼是123456。預設情況下,執行個體建立成功後,需要重新開機一次,cloudinit才能生效。

增加一個中繼資料,這個手動解析吧,如果不想幹這些事,那就是用user-data來解決

user-data

鏡像模闆制作時,根本不需要設定任何的使用者名密碼,如果你安裝了cloudinit,并且沒有任何改動,當執行個體建立好以後,會增加一個Admin使用者,密碼是admin_pass。如果想增加一個Guest該如何用?cloudinit給我們提供了一個user-data方案,請參考cloudinit-userdata. 在windows下可以使用批處理、powershell、python、xml格式,linux下shell、python、xml。但要注意加首行标記

批處理

rem cmd
           

PowerShell

#ps1_sysnative (system native)
#ps1_x86 (Windows On Windows 32bit)
           

shell

Python

注意:要預裝python解析環境

Python is available by default with the build itself, but also it must be in the system PATH.

EC2 format

添加一個demo使用者示例

這裡采用批處理格式

rem cmd
net user demolongruan /add /passwordchg:no /expires:never
net localgroup Guests demo/add
net localgroup Users demo/del
           

儲存檔案為adduser.bat

執行成功,重新開機後會發現多個Guest使用者demo

參考文章:

http://cloudbase-init.readthedocs.io/en/latest/userdata.html#batch

https://ask.openstack.org/en/question/61813/calling-batch-script-from-cloudbase-init/

https://www.ibm.com/developerworks/cn/cloud/library/1620-openstack-metadata-service/

繼續閱讀