
# （可选）安装并配置Cloudbase-Init工具
#### 操作场景
为了保证使用私有镜像创建的新弹性云服务器可以通过"用户数据注入"功能注入初始化自定义信息（例如为弹性云服务器设置登录密码），建议您在创建私有镜像前安装Cloudbase-Init工具。
- 不安装Cloudbase-Init工具，将无法对弹性云服务器进行自定义配置，只能使用镜像原有密码登录弹性云服务器。
- 使用公共镜像创建的弹性云服务器，默认已经安装Cloudbase-Init，不需要执行安装及配置操作。
- 使用外部镜像文件创建的弹性云服务器，请按照指导安装及配置Cloudbase-Init。
 
![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
Cloudbase-Init为开源软件，如果安装版本有安全漏洞，建议更新至最新版本。
#### 前提条件
- 已为弹性云服务器绑定弹性公网IP。
- 已登录到弹性云服务器。
- 弹性云服务器的网卡属性为DHCP方式。
- 已安装一键式重置密码插件。 因为安装Cloudbase-Init工具的操作步骤中如果有重启弹性云服务器的操作，可能导致密码被修改为一个随机密码，所以需要安装一键式重置密码插件重置密码。操作步骤请参考[Windows系统安装一键式重置密码插件](https://support.huaweicloud.com/usermanual-ims/ims_01_0402.html)。
  
 
#### 安装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前确保Administrator账号未禁用。以Windows 7为例，具体操作请以实际为准。
   1. 在操作系统中单击"开始"，选择的"控制面板 \> 系统和安全 \> 管理工具"。
   
   2. 双击"计算机管理"。
   
   3. 选择"系统工具 \> 本地用户和组 \> 用户"。
   
   4. 右键单击"Administrator"，选择"属性"。
   
   5. 确认已取消勾选"账户已禁用"选项。
    
4. 下载Cloudbase-Init工具安装包。
   根据Windows操作系统的不同位数，您需要下载不同版本的Cloudbase-Init工具安装包。Cloudbase官网：<https://www.cloudbase.it/cloud-init-for-windows-instances/>。
   稳定版本获取路径：
   - 64位：<https://www.cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi>
   
   - 32位：<https://www.cloudbase.it/downloads/CloudbaseInitSetup_Stable_x86.msi>
    
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]所示。
   ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
   图片中的版本号仅供参考，请以实际情况为准。
   图1设置参数   
   ![](https://support.huaweicloud.com/usermanual-ims/zh-cn_image_0000001505495049.png "点击放大") 
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完成安装   
    ![](https://support.huaweicloud.com/usermanual-ims/zh-cn_image_0000001455418292.png "点击放大")
    ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
    图片中的版本号仅供参考，请以实际情况为准。
    
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个字符。
      ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
      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
        
        
        ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
        若您创建实例后需要在系统内修改主机名，且业务对主机名变化敏感，不建议配置SetHostNamePlugin模块。
        
      
      - 可选加载模块，请参考如下配置**（可选）** ：
        ```
        plugins=cloudbaseinit.plugins.windows.winrmlistener.ConfigWinRMListenerPlugin,cloudbaseinit.plugins.windows.winrmcertificateauth.ConfigWinRMCertificateAuthPlugin
        ```
        各模块功能如下所述：
        - ConfigWinRMListenerPlugin：设置远程登录监听
        
        - ConfigWinRMCertificateAuthPlugin：设置远程登录无密码认证
          ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/caution_3.0-zh-cn.png)
          加载模块对应的插件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**"。
      ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
      BIOS时间同步功能是通过增加注册表项"RealTimeIsUniversal=1"实现。如果不添加配置项"**real_time_clock_utc=true**"，Cloudbase-Init会将注册表自动修改为默认值0，将导致windows虚拟机重启后无法使用BIOS时间同步。
      
    
2. 为了防止镜像中DHCP租期过长导致创建的弹性云服务器无法正确的获取地址，用户需要释放当前的DHCP地址。 在Windows命令行中，执行以下命令释放当前的DHCP地址。
   **ipconfig /release**
   ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/note_3.0-zh-cn.png)
   此操作会中断网络，对弹性云服务器的使用会产生影响。当弹性云服务器再次开机后，网络会自动恢复。
   
3. 使用Windows操作系统弹性云服务器制作镜像时，需修改弹性云服务器SAN策略为OnlineAll类型。否则可能导致使用镜像创建弹性云服务器时磁盘处于脱机状态。 Windows操作系统SAN策略分为三种类型：OnlineAll、OfflineShared、OfflineInternal
   表1Windows操作系统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**
      
    
4. 通过快捷键"Win+R"打开"运行"窗口，输入"services.msc"并单击"确定"。在"服务"管理界面，查找名称为"cloudbase-init"服务，设置启动类型为"自动"。 ![](https://support.huaweicloud.com/usermanual-ims/zh-cn_image_0000002479007721.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-ims/zh-cn_image_0000002445608480.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-ims/zh-cn_image_0000002479129765.png "点击放大")
   
 
