设为首页 收藏本站
查看: 2335|回复: 0

[经验分享] openstack镜像之Windows(可重置密码)

[复制链接]

尚未签到

发表于 2018-5-31 09:23:34 | 显示全部楼层 |阅读模式
  

环境声明:
os windows2008r2
openstack mitaka


   本文修改主机密码的方式为 metadata 注入方式,在云主机内部再配合一个修改密码、重置密码的脚本,达到修改、重置云主机密码的作用; 目前修改、重置密码的脚本都是python脚本,所以做此镜像需要在镜像中安装python,pywin32才行,因为目前测试的结果是,cloud-init在windows系统中,只会在初始化的时候启动一次,之后便不会再启动了,所以还有一个重置密码的脚本,重置密码的脚本会在系统中生成一个reset-Administrator的系统服务,此服务需要将启动类型修改为“延迟自启”;要是哪位大神看到了,希望可以指点一二


原文链接:http://readshlinux.blog.51cto.com/9322509/1902888




  

  

  1.在kvm中安装虚拟机
DSC0000.png

  

DSC0001.png

  

  

DSC0002.png

  

  然后开始安装即可
  

  

  2.为kvm中的虚拟安装虚拟驱动
  

  断开连接---->挂载virtios-win.iso---->安装设备驱动
  

  安装如下3个就ok
  viostor
  vioserial
  NetKVM
DSC0003.png

  

DSC0004.png

  

DSC0005.png

  

DSC0006.png

  

  

  viostor
  vioserial
  NetKVM
  

DSC0007.png

  

DSC0008.png

  

  虽然出现磁盘了,但是还需要安装网卡的驱动,继续
  

DSC0009.png

  

DSC00010.png

  

  

  

  3.继续安装系统
  断开virtios-win.iso ----> windows.iso
DSC00011.png

  

DSC00012.png

  

  

  安装完系统之后,需要将系统激活开启远程桌面,添加重置密码的脚本(安装python python32)第一次修改密码的脚本安装cloud-init软件包  这些操作
  =================================================================================================================================================================================================================================================================================
  

  

  最关键的是将这些信息传入进去
  1.在windows系统设置一个共享文件夹
  2.在linux系统(kvm宿主机)上挂载改windows系统的共享文件夹
  mount //windows_ip/gx /data/gx/ -o username=Administrator,password=Admin@
  

  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:utf8
import os
import json
import urllib
import win32serviceutil
import win32service
import win32event
def get_data():
data = urllib.urlopen("http://169.254.169.254/openstack/latest/meta_data.json").read().decode()
return data
def 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
  看不懂自行百度、谷歌
  

  

  cmd命令行中,执行services.msc 进入到系统的服务目录,查看有没有reset-Administrator的一个服务,并将属性中的常规启动类型修改为“自动(延迟启动)”,还有恢复中的 第一次失败到第最后一次失败   都修改为重新启动服务   即可
  

  

  9.安装cloud-init服务,
DSC00013.png

  

  快安装完时,把脚本添加到
  C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\
  即可
  

  修改密码脚本
  ===========================================================================================
# -*- coding:utf-8 -*-
import os
import json
import urllib.request
def get_data():
data = urllib.request.urlopen("http://169.254.169.254/openstack/latest/meta_data.json").read()
return data
def 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)  ===========================================================================================
  

  

DSC00014.png

  

  最后把两个钩都打上就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
  

  

  

  

  

  

  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-483309-1-1.html 上篇帖子: 最简单的 RabbitMQ 监控方法 下篇帖子: openstack Networking(neutron)服务篇
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表