更新时间:2024-04-15 GMT+08:00

安装并配置Cloudbase-Init工具

操作场景

为了保证使用私有镜像创建的新云服务器可以通过“用户数据注入”功能注入初始化自定义信息(例如为云服务器设置登录密码),建议您在创建私有镜像前安装Cloudbase-Init工具。

  • 不安装Cloudbase-Init工具,将无法对云服务器进行自定义配置,只能使用镜像原有密码登录云服务器
  • 使用公共镜像创建的云服务器,默认已经安装Cloudbase-Init,不需要执行安装及配置操作。
  • 使用外部镜像文件创建的云服务器,请按照指导安装及配置Cloudbase-Init。

Cloudbase-Init为开源软件,如果安装版本有安全漏洞,建议更新至最新版本。

前提条件

  • 已为云服务器绑定弹性公网IP。
  • 已登录到云服务器
  • 云服务器的网卡属性为DHCP方式。
  • 已安装一键式重置密码插件。

    因为安装Cloudbase-Init工具的操作步骤中如果有重启云服务器的操作,可能导致密码被修改为一个随机密码,所以需要安装一键式重置密码插件重置密码。操作步骤请参考安装一键式重置密码插件(Windows)

安装Cloudbase-Init工具

  1. 在Windows操作系统中,单击“开始”,选择“控制面板 > 程序 > 程序和功能”查看是否安装Cloudbase-Init最新1.1.2版本。
    • 已安装并为最新版本:直接执行配置Cloudbase-Init工具
    • 已安装但不是最新版本:卸载Cloudbase-Init工具后,执行以下安装操作步骤。
    • 未安装:执行以下安装操作步骤。
  2. 操作系统是否为Windows桌面版。
    • 是,执行3
    • 否,若操作系统为Windows Server版本,请执行4
  3. 如果操作系统是Windows桌面版,如Windows 7或者Windows 10,那么需要在安装Cloudbase-Init前确保Adminstrator账号未禁用。以Windows 7为例,具体操作请以实际为准。
    1. 在操作系统中单击“开始”,选择的“控制面板 > 系统和安全 > 管理工具”。
    2. 双击“计算机管理”。
    3. 选择“系统工具 > 本地用户和组 > 用户”。
    4. 右键单击“Administrator”,选择“属性”。
    5. 确认已取消勾选“账户已禁用”选项。
  4. 下载Cloudbase-Init工具安装包。

    根据Windows操作系统的不同位数,您需要下载不同版本的Cloudbase-Init工具安装包。Cloudbase官网:http://www.cloudbase.it/cloud-init-for-windows-instances/

    稳定版本获取路径:

  5. 打开Cloudbase-Init工具安装包开始安装。
  6. 单击“Next”。
  7. 勾选“I accept the terms in the License Agreement”,单击“Next”。
  8. 使用Cloudbase-Init默认安装路径进行安装,单击“Next”。
  9. 在“Configuration options”窗口中,设置用户名为“Administrator”,日志输出串口选择“COM1”,且不勾选“Run Cloudbase-Init service as LocalSystem”。如图1所示。

    图片中的版本号仅供参考,请以实际情况为准。

    图1 设置参数
  10. 单击“Next”。
  11. 单击“Install”。
  12. 在“Files in Use”窗口保留默认勾选“Close the application and attempt to restart them”,单击“OK”。
  13. 操作系统是否为Windows桌面版。
    • 是,执行15
    • 否,执行14
  14. 在“Completed the Cloudbase-Init Setup Wizard ”窗口,请勿勾选“Run Sysprep to create a generalized Image. This is necessary if you plan to duplicate this instance, for example by creating a Glance image”及“Shutdown when Sysprep terminate”。如图2所示。
    图2 完成安装

    图片中的版本号仅供参考,请以实际情况为准。

  15. 单击“Finish”。

配置Cloudbase-Init工具

  1. 在Cloudbase-Init安装路径下的配置文件“C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf”中执行以下操作:
    1. 在配置文件最后一行,增加配置项“netbios_host_name_compatibility=false”,使Windows系统的hostname长度支持到63个字符。

      NetBIOS长度受Windows系统本身的限制还只支持小于等于15个字符。

    2. 增加配置项“metadata_services=cloudbaseinit.metadata.services.httpservice.HttpService”,配置agent访问OpenStack数据源。
    3. 添加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使用了弱密码算法,可能存在安全隐患,为保证系统安全,不建议您添加此插件。

    4. (可选)增加如下配置项,配置获取metadata的重试次数和间隔。
      retry_count=40
      retry_count_interval=5
    5. (可选)增加如下配置项,防止Windows添加默认路由导致metadata网络不通。
      [openstack]
      add_metadata_private_ip_route=False
    6. (可选)当Cloudbase-Init为0.9.12及以上版本时,用户可以自定义配置密码长度。

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

    7. (可选)选择密码注入方式首次登录时,系统默认强制用户修改登录密码,若用户根据个人意愿,不需要修改首次登录使用的密码时,可关闭此功能。

      操作方法:增加配置项“first_logon_behaviour=no”。

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

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

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

  2. 为了防止镜像中DHCP租期过长导致创建的云服务器无法正确的获取地址,用户需要释放当前的DHCP地址。

    在Windows命令行中,执行以下命令释放当前的DHCP地址。

    ipconfig /release

    此操作会中断网络,对云服务器的使用会产生影响。当云服务器再次开机后,网络会自动恢复。

  3. 使用Windows操作系统云服务器制作镜像时,需修改云服务器SAN策略为OnlineAll类型。否则可能导致使用镜像创建云服务器时磁盘处于脱机状态。

    Windows操作系统SAN策略分为三种类型:OnlineAll、OfflineShared、OfflineInternal

    表1 Windows操作系统SAN策略类型

    类型

    说明

    OnlineAll

    表示所有新发现磁盘都置于在线模式。

    OfflineShared

    表示所有共享总线上(比如FC、ISCSI)的新发现磁盘都置于离线模式,非共享总线上的磁盘都置于在线模式。

    OfflineInternal

    表示所有新发现磁盘都置于离线模式。

    1. 运行cmd.exe,执行以下命令,使用DiskPart工具来查询云服务器当前的SAN策略。

      diskpart

    2. 执行以下命令查看云服务器当前的SAN策略。
      san
      • 如果SAN策略为OnlineAll,请执行exit命令退出DiskPart。
      • 否,请执行步骤3.c
    3. 执行以下命令修改云服务器SAN策略为OnlineAll。

      san policy=onlineall