標籤:openstack windows鏡像 openstack windows鏡像重設密碼 windows鏡像重設密碼 openstack-mitaka windows鏡像重設密碼
環境聲明:
os windows2008r2
openstack mitaka
本文修改主機密碼的方式為 metadata 注入方式,在雲主機內部再配合一個修改密碼、重設密碼的指令碼,達到修改、重設雲主機密碼的作用; 目前修改、重設密碼的指令碼都是python指令碼,所以做此鏡像需要在鏡像中安裝python,pywin32才行,因為目前測試的結果是,cloud-init在windows系統中,只會在初始化的時候啟動一次,之後便不會再啟動了,所以還有一個重設密碼的指令碼,重設密碼的指令碼會在系統中產生一個reset-Administrator的系統服務,此服務需要將啟動類型修改為“延遲自啟”;要是哪位大神看到了,希望可以指點一二
原文連結:http://readshlinux.blog.51cto.com/9322509/1902888
1.在kvm中安裝虛擬機器
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/8E/36/wKiom1i41BGB4qtvAADUxCM7Bk0127.png-wh_500x0-wm_3-wmp_4-s_1616061957.png" title="clipboard(12).png" alt="wKiom1i41BGB4qtvAADUxCM7Bk0127.png-wh_50" />
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/8E/34/wKioL1i41ELxgbAKAAGTHL8Rk7k795.png-wh_500x0-wm_3-wmp_4-s_2366953565.png" title="clipboard(6).png" alt="wKioL1i41ELxgbAKAAGTHL8Rk7k795.png-wh_50" />
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/8E/34/wKioL1i41HOB84RBAAF860LwDes439.png-wh_500x0-wm_3-wmp_4-s_2681214709.png" title="clipboard(13).png" alt="wKioL1i41HOB84RBAAF860LwDes439.png-wh_50" />
然後開始安裝即可
2.為kvm中的虛擬安裝虛擬驅動
中斷連線---->掛載virtios-win.iso---->安裝裝置驅動
安裝如下3個就ok
viostor
vioserial
NetKVM
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/8E/34/wKioL1i41L_AEfZfAACSh35loPY518.png-wh_500x0-wm_3-wmp_4-s_2352333374.png" title="clipboard.png" alt="wKioL1i41L_AEfZfAACSh35loPY518.png-wh_50" />
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/8E/34/wKioL1i41cDCgM4FAAEsj40wfh0906.png-wh_500x0-wm_3-wmp_4-s_3329602567.png" title="clipboard(2).png" alt="wKioL1i41cDCgM4FAAEsj40wfh0906.png-wh_50" />
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/8E/36/wKiom1i41jOhKdvdAAOSyvd4IP4700.png-wh_500x0-wm_3-wmp_4-s_3902999659.png" title="clipboard(3).png" alt="wKiom1i41jOhKdvdAAOSyvd4IP4700.png-wh_50" />
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/8E/34/wKioL1i41luymCFaAAAgkLjps04096.png-wh_500x0-wm_3-wmp_4-s_207586743.png" title="clipboard(14).png" alt="wKioL1i41luymCFaAAAgkLjps04096.png-wh_50" />
viostor
vioserial
NetKVM
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/8E/34/wKioL1i41wXQBycBAAEACJwXCbY467.png-wh_500x0-wm_3-wmp_4-s_1939286199.png" title="clipboard(1).png" alt="wKioL1i41wXQBycBAAEACJwXCbY467.png-wh_50" />
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/8E/34/wKioL1i41yyQD4vbAAEhM-1aanU762.png-wh_500x0-wm_3-wmp_4-s_2274020920.png" title="clipboard(7).png" alt="wKioL1i41yyQD4vbAAEhM-1aanU762.png-wh_50" />
雖然出現磁碟了,但是還需要安裝網卡的驅動,繼續
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/8E/34/wKioL1i411_CM-rAAAD6uGeYD-g191.png-wh_500x0-wm_3-wmp_4-s_85126186.png" title="clipboard(5).png" alt="wKioL1i411_CM-rAAAD6uGeYD-g191.png-wh_50" />
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/8E/34/wKioL1i4143xb_nDAAEYf-XkFF0938.png-wh_500x0-wm_3-wmp_4-s_1497558028.png" title="clipboard(10).png" alt="wKioL1i4143xb_nDAAEYf-XkFF0938.png-wh_50" />
3.繼續安裝系統
斷開virtios-win.iso ----> windows.iso
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/8E/36/wKiom1i418_jgCSOAACSh35loPY938.png-wh_500x0-wm_3-wmp_4-s_719081804.png" title="clipboard.png" alt="wKiom1i418_jgCSOAACSh35loPY938.png-wh_50" />
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/8E/34/wKioL1i42BqgReoUAAM3DG2ZH8g413.png-wh_500x0-wm_3-wmp_4-s_1648982840.png" title="clipboard(9).png" alt="wKioL1i42BqgReoUAAM3DG2ZH8g413.png-wh_50" />
安裝完系統之後,需要將系統啟用,開啟遠端桌面,添加重設密碼的指令碼(安裝python、 python32),第一次修改密碼的指令碼,安裝cloud-init軟體包 這些操作
=================================================================================================================================================================================================================================================================================
最關鍵的是將這些資訊傳入進去
1.在windows系統設定一個共用資料夾
2.在linux系統(kvm宿主機)上掛載改windows系統的共用資料夾
mount //windows_ip/gx /data/gx/ -o username=Administrator,password=[email protected]
3.複製相應資訊到 linux系統(kvm宿主機)掛載windows共用目錄的磁碟
4.複製資訊完成
5.在windows中將該資訊放在正確的地方
6.最後卸載linux系統掛載的windows共用資料夾
umount /data/gx/
7.將windows中的共用資料夾刪除(不要在系統中留下不該留的資訊)
8.啟用windows系統,安裝傳入的python安裝程式,並將python添加到系統內容變數中(在cmd中直接執行python,看會不會進入到pythonide的介面中),最後安裝“reset26重設密碼”服務,我是直接拷貝到python的安裝目錄,之後解釋用cmd命令切入到reset的目錄中,執行python reset26.py install 即可安裝reset的服務啦
重設密碼指令碼
該指令碼會在windows services服務中出現一個名為reset-Administrator的系統服務,注意一定要將他設定為開機延遲啟動,否則重設不了密碼;
===========================================================================================
#!/usr/bin/env python#coding:utf8import osimport jsonimport urllibimport win32serviceutilimport win32serviceimport win32eventdef get_data():data = urllib.urlopen("http://169.254.169.254/openstack/latest/meta_data.json").read().decode()return datadef parse_data(data):json_data = json.loads(data)changePasswd = json_data.get("meta").get("changePasswd")if changePasswd:adminPass = json_data.get("meta").get("admin_pass")os.system("net user Administrator /active:yes")os.system("net user Administrator %s" % adminPass)class reset(win32serviceutil.ServiceFramework):_svc_name_ = "reset"_svc_display_name_ = "reset-Administrator"def __init__(self, args):win32serviceutil.ServiceFramework.__init__(self, args)self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)def SvcStop(self):self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)win32event.SetEvent(self.hWaitStop)def SvcDoRun(self):parse_data(get_data())win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)if __name__==‘__main__‘:win32serviceutil.HandleCommandLine(reset)
===========================================================================================
windows添加環境變數
我的電腦---->屬性---->進階系統設定---->系統屬性---->進階---->環境變數---->添加到Path後就ok
看不懂自行百度、Google
cmd命令列中,執行services.msc 進入到系統的服務類別目錄,查看有沒有reset-Administrator的一個服務,並將屬性中的常規啟動類型修改為“自動(延遲啟動)”,還有恢複中的 第一次失敗到第最後一次失敗 都修改為重新啟動服務 即可
9.安裝cloud-init服務,
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/8E/36/wKiom1i42PqhgNnBAABhmw5cGpo019.png-wh_500x0-wm_3-wmp_4-s_847603232.png" title="clipboard(4).png" alt="wKiom1i42PqhgNnBAABhmw5cGpo019.png-wh_50" />
快安裝完時,把指令碼添加到
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\
即可
修改密碼指令碼
===========================================================================================
# -*- coding:utf-8 -*-import osimport jsonimport urllib.requestdef get_data():data = urllib.request.urlopen("http://169.254.169.254/openstack/latest/meta_data.json").read()return datadef parse_data(data):data1 = str(data)json_data = json.loads(data.decode())changePasswd = json_data.get("meta").get("changePasswd")if changePasswd == "True":adminPass = json_data.get("meta").get("admin_pass")os.system("net user Administrator /active:yes")os.system("net user Administrator %s" % adminPass)data = get_data()parse_data(data)
===========================================================================================
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/8E/36/wKiom1i42RaQcRGPAAJIEY0ih9E324.png-wh_500x0-wm_3-wmp_4-s_3399903962.png" title="clipboard(11).png" alt="wKiom1i42RaQcRGPAAJIEY0ih9E324.png-wh_50" />
最後把兩個鉤都打上就ok啦,這個服務會自動清理曆史命令,mac地址,ip地址等
最後記得把cloud-init這個包刪除,在點擊finish之後,立馬刪除就ok
顯示kvm中所有虛擬機器
virsh list --all
在kvm中刪除虛擬機器,僅僅刪除xml檔案,不會刪除鏡像檔案
virsh undefine windows
將鏡像壓縮
qemu-img convert -c -O qcow2 壓縮之前的路徑+名字 壓縮之後的路徑+名字
參考文檔:https://docs.openstack.org/image-guide/windows-image.html
參考文檔:http://www.cnblogs.com/eineseite/archive/2009/07/02/1515388.html
參考文檔:https://kurisu.love/index.php/archives/47/
參考文檔:http://www.bubuko.com/infodetail-705509.html
參考文檔:http://blog.csdn.net/ghostfromheaven/article/details/8604738
本文出自 “RSLinux” 部落格,請務必保留此出處http://readshlinux.blog.51cto.com/9322509/1902888
openstack鏡像之Windows(可重設密碼)