安装Cloudbase-Init(可选)
为了保证使用生成的镜像创建的新云服务器可以自定义配置(例如修改云服务器密码),建议您安装Cloudbase-Init工具。不安装Cloudbase-Init工具,将无法对云服务器进行自定义配置,只能使用镜像原有密码登录云服务器。
Cloudbase-Init为开源软件,如果安装版本有安全漏洞,建议更新至最新版本。
安装Cloudbase-Init
- 下载Cloudbase-Init工具安装包。
根据Windows操作系统的不同位数,您需要下载不同版本的Cloudbase-Init工具安装包,并将下载后的安装包保存至本地已设置共享的文件夹。
Cloudbase官网:http://www.cloudbase.it/cloud-init-for-windows-instances/。
- 在VirtualBox Windows虚拟机处,选择“计算机 > 网络 > VBOXSVR”。
- 双击打开共享文件夹,将Cloudbase-Init工具安装包拷贝至新创建的虚拟机,双击进行安装。
配置Cloudbase-Init工具
- 在Cloudbase-Init安装路径下的配置文件“C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf”中执行以下操作:
- 在配置文件最后一行,增加配置项“netbios_host_name_compatibility=false”,使Windows系统的hostname长度支持到63个字符。
NetBIOS长度受Windows系统本身的限制还只支持小于等于15个字符。
- 增加配置项“metadata_services=cloudbaseinit.metadata.services.httpservice.HttpService”,配置agent访问OpenStack数据源。
- 添加plugins配置项,设置要加载的模块,以“,”为分隔符,加粗的部分为模块关键字。
- 如下参数配置为官方默认加载模块,您可以根据业务需要选择配置全部或部分模块:
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
若您创建实例后需要在系统内修改主机名,且业务对主机名变化敏感,不建议配置SetHostNamePlugin模块。
- 可选加载模块,请参考如下配置(可选):
plugins=cloudbaseinit.plugins.windows.winrmlistener.ConfigWinRMListenerPlugin,cloudbaseinit.plugins.windows.winrmcertificateauth.ConfigWinRMCertificateAuthPlugin
各模块功能如下所述:
- ConfigWinRMListenerPlugin:设置远程登录监听
- ConfigWinRMCertificateAuthPlugin:设置远程登录无密码认证
加载模块对应的插件WinRM使用了弱密码算法,可能存在安全隐患,为保证系统安全,不建议您添加此插件。
- 如下参数配置为官方默认加载模块,您可以根据业务需要选择配置全部或部分模块:
- (可选)增加如下配置项,配置获取metadata的重试次数和间隔。
retry_count=40 retry_count_interval=5
- (可选)增加如下配置项,防止Windows添加默认路由导致metadata网络不通。
[openstack] add_metadata_private_ip_route=False
- (可选)当Cloudbase-Init为0.9.12及以上版本时,用户可以自定义配置密码长度。
操作方法:修改配置项“user_password_length”的值,完成密码长度的自定义配置。
- (可选)选择密码注入方式首次登录时,系统默认强制用户修改登录密码,若用户根据个人意愿,不需要修改首次登录使用的密码时,可关闭此功能。
操作方法:增加配置项“first_logon_behaviour=no”。
- (可选)增加Cloudbase-Init配置项,防止虚拟机无法使用BIOS时间同步。
操作方法:在“cloudbase-init.conf”中添加相应的配置项“real_time_clock_utc=true”。
BIOS时间同步功能是通过增加注册表项“RealTimeIsUniversal=1”实现。如果不添加配置项“real_time_clock_utc=true”,Cloudbase-Init会将注册表自动修改为默认值0,将导致windows虚拟机重启后无法使用BIOS时间同步。
- 在配置文件最后一行,增加配置项“netbios_host_name_compatibility=false”,使Windows系统的hostname长度支持到63个字符。
- 为了防止镜像中DHCP租期过长导致创建的云服务器无法正确的获取地址,用户需要释放当前的DHCP地址。
在Windows命令行中,执行以下命令释放当前的DHCP地址。
ipconfig /release
此操作会中断网络,对云服务器的使用会产生影响。当云服务器再次开机后,网络会自动恢复。
- 使用Windows操作系统云服务器制作镜像时,需修改云服务器SAN策略为OnlineAll类型。否则可能导致使用镜像创建云服务器时磁盘处于脱机状态。
Windows操作系统SAN策略分为三种类型:OnlineAll、OfflineShared、OfflineInternal
表1 Windows操作系统SAN策略类型 类型
说明
OnlineAll
表示所有新发现磁盘都置于在线模式。
OfflineShared
表示所有共享总线上(比如FC、ISCSI)的新发现磁盘都置于离线模式,非共享总线上的磁盘都置于在线模式。
OfflineInternal
表示所有新发现磁盘都置于离线模式。
- 运行cmd.exe,执行以下命令,使用DiskPart工具来查询云服务器当前的SAN策略。
diskpart
- 执行以下命令查看云服务器当前的SAN策略。
san
- 如果SAN策略为OnlineAll,请执行exit命令退出DiskPart。
- 否,请执行步骤3.c。
- 执行以下命令修改云服务器SAN策略为OnlineAll。
san policy=onlineall
- 运行cmd.exe,执行以下命令,使用DiskPart工具来查询云服务器当前的SAN策略。