要使 Cloud Assembly 初始化部署到 vSphere 的 Windows 计算机,映像需要基于安装并配置了 Cloudbase-Init 的 vSphere 模板。

创建映像

  1. 使用 vSphere 创建 Windows 虚拟机并打开其电源。
  2. 在虚拟机上,登录到 Windows。
  3. 下载 Cloudbase-Init。

    https://cloudbase.it/cloudbase-init/#download

  4. 启动 Cloudbase-Init 设置 .msi 文件。

    在安装过程中,输入 Administrator 作为用户名,然后选择以 LocalSystem 身份运行的选项。

    Cloudbase-Init 安装向导帐户页面

    其他设置选项可以保留为默认值。

  5. 允许安装运行,但不关闭设置向导的最终“已完成”页面。
    重要说明: 请勿关闭设置向导的最后一个页面。
  6. 在安装向导的“已完成”页面仍处于打开状态的情况下,使用 Windows 导航到 Cloudbase-Init 安装路径,并在文本编辑器中打开以下文件。

    conf\cloudbase-init-unattend.conf

  7. metadata_services 设置为 OvfService,如下所示。 如果该设置不存在,请添加该设置。

    metadata_services=cloudbaseinit.metadata.services.ovfservice.OvfService

  8. 保存并关闭 cloudbase-init-unattend.conf
  9. 从同一文件夹中,使用文本编辑器打开以下文件。

    conf\cloudbase-init.conf

  10. 设置 first_logon_behaviourmetadata_servicesplugins,如下所示。 如果这些设置不存在,请添加这些设置。
    first_logon_behaviour=always
    . . .
    metadata_services=cloudbaseinit.metadata.services.ovfservice.OvfService
    . . . 
    plugins=cloudbaseinit.plugins.windows.createuser.CreateUserPlugin,cloudbaseinit.plugins.windows.setuserpassword.SetUserPasswordPlugin,cloudbaseinit.plugins.common.sshpublickeys.SetUserSSHPublicKeysPlugin,cloudbaseinit.plugins.common.userdata.UserDataPlugin
    . . .
  11. 保存并关闭 cloudbase-init.conf
  12. 在设置向导的“已完成”页面上,选择运行 Sysprep 的选项和运行 Sysprep 之后关闭的选项,然后单击完成
    注: VMware 曾经遇到过运行 Sysprep 会阻止映像部署正常运行的情况。

    部署时,Cloud Assembly 会应用动态生成的自定义规范,这会断开网络接口的连接。映像中的挂起 Sysprep 状态可能会导致自定义规范失败并使部署处于已断开连接状态。

    如果您怀疑环境中发生这种情况,请尝试在创建映像时使 Sysprep 选项处于已停用状态。
    Cloudbase-Init 安装向导最终页面
  13. 虚拟机关闭后,使用 vSphere 将其转换为模板。

其他详细信息

下表详述了在设置期间配置的条目。

配置设置 用途
用户名、CreateUserPlugin 和 SetUserPasswordPlugin 运行 Sysprep 后,首次引导使用 CreateUserPlugin 创建用户名 Administrator 帐户,但密码为空。SetUserPasswordPlugin 允许 Cloudbase-Init 将空密码更改为将包含在云模板中的远程访问密码。
首次登录行为 此设置会在首次登录时提示用户更改密码。
元数据服务 通过仅列出 OvfService,Cloudbase-Init 不会尝试查找 vCenter 中不支持的其他元数据服务。这会使日志文件更干净,否则日志中将充满有关找不到那些其他服务的条目。
插件 通过仅列出具有 OvfService 所支持功能的插件,日志将再次变得更加干净。Cloudbase-Init 按指定的顺序运行插件。
以 LocalSystem 身份运行 此设置支持任何高级初始化命令,这些命令可能需要 Cloudbase-Init 才能在专用管理员帐户下运行。