首页 > 云计算 > promox ve > Windows系统初始化工具Cloudbase-init

776

浏览

0

评论

Windows系统初始化工具Cloudbase-init

作者:stephen | 分类:promox ve | 标签:

在Windows实现初始化工具叫做cloudbase-init。

 

Proxmox VE对于Windows类型的虚拟机,提供了一个叫作configdrive2的元数据服务,务必先看下面链接,了解Proxmox VE在Cloudinit方面的实现。

佛西博客 - Proxmox VE与Cloud-init (buduanwang.vip)

在Windows客户机中安装好Cloudinit-base软件包之后,下次开机会从配置的元数据列表中,搜寻现有的元数据,在Proxmox VE 元数据服务就是configdrive2,因此,Cloudbase-init会读取cloudinit信息,从而自定义虚拟机。

目前PVE支持的元数据类型有User,Network。所以目前能办到的就是修改ip或者dns,新建用户,修改密码等基本功能。

一 修改PVE代码

看过上面的链接,你应该注意到,对于任何类型的os,PVE都会将用户密码进行加密,再写入到cloudinit驱动器中。

然而Windows就只识别明文密码。所以不修改代码,在用户创建这块就会存在问题。

这里有一个热爱ProxmoxVE的团队做出了一个修改代码的补丁,本文就是根据此方案,给大家分享。

GECO-IT-PUBLIC/Geco-Cloudbase-Init - Geco-Cloudbase-Init - Version Control System

安装git

apt update && apt install git -y

克隆库

cd /opt/ && git clone https://git.geco-it.net/GECO-IT-PUBLIC/Geco-Cloudbase-Init/

PVE6和PVE7代码不一样,因此有2个补丁,先确认自己是哪个版本,在终端执行pveversion

 

root@pve:~# pveversionpve-manager/7.1-8/5b267f33 (running kernel: 5.13.19-2-pve)

如果是7,执行patch预检测

 

patch --force --forward --backup -p0 --directory / --input "/opt/Geco-Cloudbase-Init/qemu-server-7.1-4/Cloudinit.pm.patch" --dry-run && echo "You can apply patch" || { echo "Can't apply patch!";}patch --force --forward --backup -p0 --directory / --input "/opt/Geco-Cloudbase-Init/qemu-server-7.1-4/Qemu.pm.patch" --dry-run && echo "You can apply patch" || { echo "Can't apply patch!";}

如果是6,执行patch预检测

 

patch --force --forward --backup -p0 --directory / --input "/opt/Geco-Cloudbase-Init/qemu-server-6.4-2/Cloudinit.pm.patch" --dry-run && echo "You can apply patch" || { echo "Can't apply patch!";}patch --force --forward --backup -p0 --directory / --input "/opt/Geco-Cloudbase-Init/qemu-server-6.4-2/Qemu.pm.patch" --dry-run && echo "You can apply patch" || { echo "Can't apply patch!";}

当两条命令都出现,You can apply patch那么就代表可以这个修改补丁。

修改代码

pve7执行

patch --force --forward --backup -p0 --directory / --input "/opt/Geco-Cloudbase-Init/qemu-server-7.1-4/Cloudinit.pm.patch"patch --force --forward --backup -p0 --directory / --input "/opt/Geco-Cloudbase-Init/qemu-server-7.1-4/Qemu.pm.patch"

pve6执行

 

patch --force --forward --backup -p0 --directory / --input "/opt/Geco-Cloudbase-Init/qemu-server-6.4-2/Cloudinit.pm.patch" patch --force --forward --backup -p0 --directory / --input "/opt/Geco-Cloudbase-Init/qemu-server-6.4-2/Qemu.pm.patch"

此时代码已经修改完成,需要重启一下PVE服务才能生效

 

systemctl restart pvedaemon.service

二 在虚拟机中安装Cloudbase-init

在ProxmoxVE创建一个虚拟机,系统类型务必选择Windows,并且添加一个串口设备。在模板创建完成之前,请勿添加cloudinit驱动器!

Windows版本的Cloudinit-base仅支持以下版本

  • Windows Server 2008

  • Windows Server 2008 R2

  • Windows Server 2012 R2

  • Windows Server 2016

  • Windows Server 2019

  • Windows Server 2022

  • Windows 7, 8, 8.1, 10

建议使用Administrator用户进行系统部署。在计算机管理中,启用administrator用户,并切换。

下载cloudbase-init主程序:

Windows 64位:

https://cloudbase.it/downloads/CloudbaseInitSetup_x64.msi

Windows 32位:

https://cloudbase.it/downloads/CloudbaseInitSetup_x86.msi

注意!这里使用的Continuous 版本,因为GECO-IT说稳定版有些功能没有,不适合这个补丁。

如果要下载稳定版本,请前往:

Cloudbase-Init - Cloudbase Solutions

下载Geco-Cloudbase-Init程序,

访问下面链接

GECO-IT-PUBLIC/Geco-Cloudbase-Init - Geco-Cloudbase-Init - Version Control System

找到下载按钮,下载ZIP文件

2个文件下载好后,放到虚拟机桌面上

双击安装cloudinit-base,这里有几个选项需要注意:

如果没有出现COM1,那么本文可能不适合你。

安装完成之后,不要勾选2个东西,直接点击finish

解压Geco-Cloudbase-init包。

将里面的localscripts文件夹放置到

64位系统

C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\ 文件目录中

32位系统

C:\Program Files(x86)\Cloudbase Solutions\Cloudbase-Init\LocalScripts\

最终如下

 

以管理员身份运行powershell

执行下面命令set-executionpolicy -executionpolicy unrestricted 开启运行脚本权限。

将Geco-Cloudbase-init包里的powershell文件夹中的2个文件,拖到命令窗口中运行。根据配置不同,有些报错,不必理会。

 

重启主机,可以在串口控制台看到如下消息。

那么从现在开始虚拟机Cloudbase-init组件便配置好了。

三:自定义Windows虚拟机

Cloudbase-init安装成功之后,你可以自由的安装软件,配置系统。

当一切结束之后,你需要确认2个方向。

  • 将虚拟机作为域用户

    • 请执行oobe

      cd ‘C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf’
      C:\Windows\System32\sysprep\sysprep.exe /generalize /oobe /unattend:Unattend.xml
  • 直接使用

    • 不通过oobe操作,也可以运行,只不过sid会一样,某些环境不允许sid一样

执行oobe之后,或者不执行,都需要关闭虚拟机。

四:添加Cloudinit驱动器

在虚拟机的硬件上,添加Cloudinit驱动器

随后配置相关信息。填写完成之后,点击重生成映像。

五:开机测试

开机之后,你可以打开串口控制台,查看调试信息。

因为Cloudinit-base会开机之后,初始化,所以请在开机之后,不要急着进系统,等待1-2分钟。

不出意外,可以看到登录界面有新建的用户。

使用设置的密码登录,会有个用户创建过程,

之后,检查网络和电脑名,我这里有个169ip,是因为设置的ip冲突了。

电脑名和虚拟机一致

 

如果再关机,将虚拟机重命名位citest2,重启虚拟机,虚拟机也变了个名字。

 

目前最基本的功能已达成,更加高级的应用,请自己参考WIKI

 


本文链接:https://www.stephenwxf.com/post/194.html
原创文章如转载请注明:转载自王显璠的个人博客谢谢!

Copyright Your stephenwxf.com Rights Reserved.