Proxmox VE给Windows虚拟机设置CloudBase-init

添加接口

首先我们要在硬件里添加一个端口给cloudbase-init

先关闭虚拟机,然后如图添加

image-20251028204151368

image-20251028204247014

同理再添加一个cloud-init设备

image-20251029001942951

image-20251029202424385

下载安装

给虚拟机开机,通过官方下载地址进行下载

cloudbase-init

打开安装,一直下一步即可

image-20251029202136504

到这里选端口的时候就选我们刚才刚添加好的端口,下面的勾是Windows Server就不要勾

image-20251029202635718

点install以后等一会它自己安装

image-20251029202909749

最后这两个也不要勾选,然后点“finish”完成安装

image-20251029203304767

配置文件

在Cloudbase-Init安装路径下的配置文件“C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf”中执行以下操作:

在最后面增加以下内容:

1
2
3
netbios_host_name_compatibility=false
metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService
first_logon_behaviour=no

增加配置项“netbios_host_name_compatibility=false”,使Windows系统的hostname长度支持到63个字符。(NetBIOS长度受Windows系统本身的限制还只支持小于等于15个字符。)

增加配置项“metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService”,配置agent访问本地数据源。

增加配置项“first_logon_behaviour=no”,选择密码注入方式首次登录时,系统默认强制用户修改登录密码,若用户根据个人意愿,不需要修改首次登录使用的密码时,可关闭此功能。

以下是其他可选的:

添加plugins配置项,设置要加载的模块,以“,”为分隔符,加粗的部分为模块关键字。

如下参数配置为官方默认加载模块,您可以根据业务需要选择配置全部或部分模块:

1
plugins=cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin,cloudbaseinit.plugins.common.mtu.MTUPlugin,cloudbaseinit.plugins.windows.createuser.CreateUserPlugin,cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin,cloudbaseinit.plugins.common.sshpublickeys.SetUserSSHPublicKeysPlugin,cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin,cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,cloudbaseinit.plugins.common.userdata.UserDataPlugin,cloudbaseinit.plugins.windows.licensing.WindowsLicensingPlugin

各模块功能如下所述:

  • LocalScriptsPlugin:设置脚本执行
  • MTUPlugin:设置MTU网络接口
  • CreateUserPlugin:创建用户
  • SetUserPasswordPlugin:设置密码
  • SetUserSSHPublicKeysPlugin:设置密钥
  • SetHostNamePlugin:设置主机名
  • ExtendVolumesPlugin:磁盘扩容
  • UserDataPlugin:用户数据注入
  • WindowsLicensingPlugin:激活window instance

可选加载模块,请参考如下配置**(可选)**:

1
plugins=cloudbaseinit.plugins.windows.winrmlistener.ConfigWinRMListenerPlugin,cloudbaseinit.plugins.windows.winrmcertificateauth.ConfigWinRMCertificateAuthPlugin

各模块功能如下所述:

  • ConfigWinRMListenerPlugin:设置远程登录监听
  • ConfigWinRMCertificateAuthPlugin:设置远程登录无密码认证

**(可选)**增加如下配置项,配置获取metadata的重试次数和间隔。

1
2
retry_count=40
retry_count_interval=5

**(可选)**增加如下配置项,防止Windows添加默认路由导致metadata网络不通。

1
2
[openstack]
add_metadata_private_ip_route=False

(可选)当Cloudbase-Init为0.9.12及以上版本时,用户可以自定义配置密码长度。

操作方法:修改配置项“user_password_length”的值,完成密码长度的自定义配置。

**(可选)**增加Cloudbase-Init配置项,防止虚拟机无法使用BIOS时间同步。

操作方法:在“cloudbase-init.conf”中添加相应的配置项“real_time_clock_utc=true”。

(BIOS时间同步功能是通过增加注册表项“RealTimeIsUniversal=1”实现。如果不添加配置项“real_time_clock_utc=true”,Cloudbase-Init会将注册表自动修改为默认值0,将导致windows虚拟机重启后无法使用BIOS时间同步。)

设置参数

然后就可以通过pve界面给虚拟机设置参数了

要注意的是:

第一,密码生成必须符合windows server的复杂度要求否则无法生效

第二,必须点右上角的“重生成镜像”才会启用

image-20251030100435962