更新时间:2025-05-26 GMT+08:00
分享

(可选)安装和配置Cloud-Init工具

操作场景

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

  • 使用公共镜像创建的云服务器,默认已经安装Cloud-Init,不需要执行安装及配置操作。
  • 用户导入镜像创建的云服务器,请按照指导安装及配置Cloud-Init。
  • 安装Cloud-Init工具时需要从官网下载并安装,因此,需要提前为云服务器绑定弹性公网IP。
  • 不安装Cloud-Init工具,将无法对云服务器进行自定义配置,只能使用镜像原有密码登录云服务器

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

前提条件

  • 已为云服务器绑定弹性公网IP。
  • 已登录云服务器
  • 云服务器的网卡属性为DHCP方式。

安装步骤说明

  1. 请先检查是否已安装Cloud-Init工具。

    具体操作请参考检查是否已经安装Cloud-Init工具

  2. 安装Cloud-Init工具。

    Cloud-Init安装方式分为:采用官方提供的包源安装Cloud-Init工具(优先推荐)采用官方提供的Cloud-Init源码包通过pip方式安装Cloud-Init工具采用官方源码编译安装方法

检查是否已经安装Cloud-Init工具

请先执行如下步骤检查是否已安装Cloud-Init工具。在不同的操作系统下,查看是否已经安装Cloud-Init工具的方法不同。

  • 若依赖python3 环境时,以Ubuntu22.0.4为例,执行以下命令查看是否安装Cloud-Init工具。

    which cloud-init

    • 回显类似如下,表示已经安装Cloud-Init工具,无需重复安装。
      /usr/bin/cloud-init
    • 回显类似如下,表示未安装Cloud-Init工具。
      /usr/bin/which: no cloud-init in (/usr/local/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)
  • 若依赖python2 环境时,以CentOS 6系列为例,执行以下命令查看是否安装Cloud-Init工具。

    which cloud-init

    • 回显类似如下,表示已经安装Cloud-Init工具,无需重复安装。
      cloud-init-0.7.5-10.el6.centos.2.x86_64
    • 无回显信息表示未安装Cloud-Init工具。

      由于Cloud-Init工具存在多种安装方法,如果无回显信息,请再次使用rpm -qa |grep cloud-init命令进行检查。which cloud-initrpm -qa |grep cloud-init任何一个命令显示已安装,表示操作系统已安装Cloud-Init工具。

如果已安装Cloud-Init工具,还需要执行以下操作:
  • 请确认当前云服务器操作系统中用于SSH登录的证书是否继续使用。如果不再使用该证书,请删除证书。
    • root用户对应目录下的文件(如“/$path/$to/$root/.ssh/authorized_keys”),执行以下命令:

      cd /root/.ssh

      rm authorized_keys

    • 非root用户对应目录下的证书文件(如“/$path/$to/$none-root/.ssh/authorized_keys”),执行以下命令:

      cd /home/centos/.ssh

      rm authorized_keys

  • 执行以下命令,清除Cloud-Init工具产生的缓存,确保使用该私有镜像创建的云服务器可以使用证书方式登录。

    sudo rm -rf /var/lib/cloud/*

设置完成后请勿重启云服务器,否则,需重新设置。

采用官方提供的包源安装Cloud-Init工具(优先推荐)

在不同操作系统的云服务器上安装Cloud-Init工具的方法不同,请在root用户下执行相关安装操作。

以下将介绍SUSE、CentOS、Fedora、Debian和Ubuntu操作系统安装Cloud-Init工具的具体方法。其他操作系统类型,请安装并配置对应类型的Cloud-Init工具,例如,使用CoreOS操作系统时需安装并配置coreos-cloudinit。

  • SUSE操作系统

    SUSE操作系统的Cloud-Init网络安装地址:

    https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/

    http://download.opensuse.org/repositories/Cloud:/Tools/

    在上述提供的网络安装地址下选择相应操作系统版本的repo安装包进行安装。

    以SUSE Enterprise Linux Server 12为例,Cloud-Init工具的安装步骤如下。

    1. 登录到创建Linux私有镜像所使用的云服务器
    2. 执行以下命令,安装SUSE 12的网络安装源。

      zypper ar https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/SLE_12_SP3/Cloud:Tools.repo

    3. 执行以下命令,更新网络安装源。

      zypper refresh

    4. 执行以下命令,安装Cloud-Init。

      zypper install cloud-init

    5. 执行以下命令,设置Cloud-Init为开机自启动服务。
      • SUSE 11:

        chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on

        service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status

      • SUSE 12以及openSUSE 12/13/42:

        systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

        systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      对于SUSE和openSUSE操作系统,请执行以下步骤禁止动态修改主机名称。

      1. 执行以下命令,使用vi编辑器打开“dhcp”文件。

        vi etc/sysconfig/network/dhcp

      2. 将“dhcp”文件中的“DHCLIENT_SET_HOSTNAME”的值修改为“no”。
  • CentOS操作系统
    CentOS操作系统的Cloud-Init网络安装地址如表1所示。请在提供的网络安装地址下选择相应的epel-release安装包进行安装。
    表1 Cloud-Init网络安装地址

    操作系统类型

    版本

    网络安装地址

    CentOS

    6系列32位

    https://archives.fedoraproject.org/pub/archive/epel/6/i386/

    6系列64位

    https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/

    7系列64位

    https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/e/

    1. 执行以下命令安装Cloud-Init:

      yum install 网络安装地址/epel-release-x-y.noarch.rpm

      yum install cloud-init

      “网络安装地址”表示Cloud-Init对应的epel-release安装包的地址,x-y”表示当前操作系统对应的Cloud-Init epel-release版本号,执行命令时需参考表1以及实际使用的安装包版本进行替换。

      • 以CentOS 6系列64位为例,当前版本号为6.8,则命令修改为:

        yum install https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm

      • 以CentOS 7系列64位为例,当前版本号为7.14,则命令修改为:

        yum install https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm

    2. 执行以下命令,设置Cloud-Init为开机自启动服务。

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

  • Fedora操作系统

    安装Cloud-Init前,请确认操作系统已经配置好对应的网络安装源地址,请查看“/etc/yum.repo.d/fedora.repo”文件中是否已配置相关软件包安装源地址,如果没有配置相关地址源,请参考相关Fedora官网信息配置软件包安装源。

    1. 执行以下命令,安装Cloud-Init。

      yum install cloud-init

    2. 执行以下命令,设置Cloud-Init为开机自启动服务。

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

  • Debian和Ubuntu操作系统

    安装Cloud-Init前,请确认操作系统已经配置好对应的网络安装源地址,请查看“/etc/apt/sources.list”文件中是否已配置相关软件包安装源地址,如果没有配置相关地址源,请参考Debian或者Ubuntu官网信息配置软件包安装源。

    1. 执行以下命令,安装Cloud-Init。

      apt-get update

      apt-get install cloud-init

    2. 执行以下命令,设置Cloud-Init为开机自启动服务。

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

    以cloud-init-23.2.2版本为例,介绍Centos、Fedora、Ubuntu、Debian和SUSE操作系统安装Cloud-Init工具的具体方法,安装步骤如下。

    cloud-init-23.2.2.tar.gz源码包下载地址:https://launchpad.net/cloud-init/trunk/23.2.2/+download/cloud-init-23.2.2.tar.gz

  • Centos 7/Fedora (Fedora-Server-36)操作系统

    依赖python3 环境,确认已经安装python3。

    1. 查询当前系统环境是否已安装cloud-init, 执行有结果表示已经安装。
      cloud-init -v
    2. 删除cloud-init缓存目录。
      rm -rf /var/lib/cloud/*
    3. 安装cloud-init依赖包。
      yum install python3-pip -y
      yum install python3-devel
    4. 执行如下命令,下载cloud-init压缩包。
      wget https://launchpad.net/cloud-init/trunk/23.2.2/+download/cloud-init-23.2.2.tar.gz
    5. 执行如下命令,解压cloud-init压缩包。
      tar -zxvf cloud-init-23.2.2.tar.gz
    6. 执行如下命令进入cloud-init-23.2.2目录文件夹,并安装所有依赖库。
      cd cloud-init-23.2.2
      pip3 install -r requirements.txt
    7. 执行如下命令安装cloud-init。
      python3 setup.py build
      python3 setup.py install --init-system systemd
    8. 在配置文件/etc/cloud/cloud.cfg禁用cloud-init接管网络(可选)。
      vi /etc/cloud/cloud.cfg

      添加如下内容:

      network:
        config: disabled
    9. 重启cloud-init, 查看cloud-init 状态。
      systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

    10. 设置cloud-init相关服务为开机自启动。
      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
    11. 执行如下命令检查cloud-init版本以及是否正常运行。
      cloud-init -v
      cloud-init init --local 

  • Ubuntu22.0.4/debian11操作系统

    依赖python3 环境,确认已经安装python3。

    1. 检查并清理系统自带的cloud-init可能存在冗余的配置文件。
      rm -rf /var/lib/cloud/*
      rm -f /var/log/cloud-init*

      删除/etc/cloud/cloud.cfg.d/目录下除了log相关的配置文件外的所有文件。

    2. 执行如下命令更新apt,检查是否有wget,没有则安装。
      sudo apt update
      sudo apt install wget 
    3. 执行如下命令,安装依赖包。
      apt-get install cloud-guest-utils -y
      apt-get install python3-pip -y
      apt-get install python3-devel
    4. 执行以下命令,下载cloud-init压缩包。
      wget https://launchpad.net/cloud-init/trunk/23.2.2/+download/cloud-init-23.2.2.tar.gz
    5. 执行如下命令,解压cloud-init压缩包。
      tar -zxvf cloud-init-23.2.2.tar.gz
    6. 进入cloud-init目录。
      cd cloud-init-23.2.2
    7. 执行如下命令安装所有依赖库。
      pip3 install -r requirements.txt
    8. 执行如下命令安装cloud-init。
      python3 setup.py install
    9. 在vi /etc/cloud/cloud.cfg配置禁止cloud-init接管网络(可选)。

      1.当cloud-init版本等于高于0.7.9版本,且用户需要自定义网络时,在cloud-init安装完成后,请执行如下命令,在编辑器中打开/etc/cloud/cloud.cfg。

      vi /etc/cloud/cloud.cfg

      2.输入i, 在/etc/cloud/cloud.cfg中将network修改为disabled, 禁用Cloud-Init接管网络配置(若没有该配置项请增加):

      network:
        config: disabled
    10. 重启cloud-init, 查看cloud-init 状态。
      systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
    11. 设置cloud-init相关服务为开机自启动。
      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
    12. 执行如下命令检查cloud-init版本以及是否正常运行。
      cloud-init -v
      cloud-init init --local

  • SUSE Enterprise Linux Server 15操作系统

    依赖python3 环境,确认已经安装python3。

    1. 执行如下命令查看历史已配置好的安装源。
      zypper lr
    2. 执行如下命令删除历史配置的suse的cloud-init的源。
      zypper rr 步骤1中执行结果显示的序号
    3. 执行如下命令配置suse源。
      zypper ar https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/SLE_15_SP4/Cloud:Tools.repo
    4. 执行如下命令刷新suse源。
      zypper refresh
    5. 执行如下命令安装cloud-init。
      zypper install cloud-init
    6. 安装cloud-init成功后,执行cloud-init -v,若出现类似下图报错提示,需执行如下命令安装依赖包。

      pip install requests pyyaml oauthlib jsonschema jsonpatch jinja2 configobj
    7. 检查cloud-init是否安装成功,若出现下图报错提示,则需要在/etc/cloud/cloud.cfg配置datasource_list。
      datasource_list: [ OpenStack ]
      datasource:
        OpenStack:
          metadata_urls: ['http://169.254.169.254']
          max_wait: 120
          timeout: 5
          apply_network_config: false
    8. 修改配置文件后,重启cloud-init, 并查看cloud-init 的状态。
      systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 
      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
    9. 设置cloud-init相关服务为开机自启动。
      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

    10. 执行如下命令检查cloud-init版本以及是否正常运行。
      cloud-init -v
      cloud-init init --local

采用官方提供的Cloud-Init源码包通过pip方式安装Cloud-Init工具

以cloud-init-0.7.9版本为例,Cloud-Init工具的安装步骤如下。

  1. 下载cloud-init-0.7.9.tar.gz源码包,上传到云服务器指定目录“/home/”下。

    cloud-init-0.7.9.tar.gz源码包下载地址:

    https://launchpad.net/cloud-init/trunk/0.7.9/+download/cloud-init-0.7.9.tar.gz

  2. 在“~/.pip/”目录下新建pip.conf文件,编辑内容如下。

    “~/.pip/”若不存在,可使用命令mkdir ~/.pip命令新建。

    [global]
    index-url  = https://<$mirror>/simple/
    trusted-host = <$mirror>

    编辑内容中<$mirror>部分可以选择公网PyPI源或教育网PyPI源进行替换。

  3. 执行以下命令,安装本地下载的Cloud-Init源码包,安装过程中根据需要选择--upgrade参数。

    pip install [--upgrade] /home/cloud-init-0.7.9.tar.gz

    安装Cloud-Init源码包的更多信息,请参见cloud-init官方文档

  4. 执行命令cloud-init -v,如回显如下类似信息表示安装Cloud-Init成功。
    cloud-init 0.7.9
  5. 设置Cloud-Init相关服务为开机自启动。
    • 若操作系统是sysvinit自启动管理服务,则执行以下命令进行设置。

      chkconfig --add cloud-init-local; chkconfig --add cloud-init; chkconfig --add cloud-config; chkconfig --add cloud-final

      chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on

      service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status

    • 若操作系统是systemd自启动管理服务,则执行以下命令进行设置。

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

采用官方提供的Cloud-Init源码包通过pip方式进行安装时要注意以下两点。

  1. Cloud-Init安装时需要添加syslog用户到adm组。存在syslog用户时直接添加syslog用户到adm组。不存在syslog用户时(如CentOS和SUSE),执行下列命令创建syslog用户,添加到adm组:

    useradd syslog

    groupadd adm

    usermod -g adm syslog

  2. 在“/etc/cloud/cloud.cfg”中system_info部分的distro要根据具体操作系统发行版本做相应修改(如根据具体操作系统发行版相应修改为:distro: ubuntudistro: slesdistro: debiandistro: fedora)。

采用官方源码编译安装方法

官方源码编译安装方法的Cloud-Init工具Github开源地址:https://github.com/canonical/cloud-init/

  1. 执行以下命令,下载Cloud-Init压缩包,并将其复制至新建的“/tmp/CLOUD-INIT”文件夹。

    wget https://github.com/canonical/cloud-init/archive/refs/tags/0.7.6.zip

    mkdir /tmp/CLOUD-INIT

    cp cloud-init-0.7.6.zip /tmp/CLOUD-INIT

    cd /tmp/CLOUD-INIT

  2. 执行如下命令,解压Cloud-Init压缩包。

    unzip cloud-init-0.7.6.zip

  3. 执行如下命令进入cloud-init-0.7.6文件夹。

    cd cloud-init-0.7.6

  4. 若cloud-init为18.3~22.3版本,则需要进行如下适配。否则跳过本步骤,继续执行下一步。

    sed -i '/VALID_DMI_ASSET_TAGS =/a\VALID_DMI_ASSET_TAGS += ["HUAWEICLOUD"]' cloudinit/sources/DataSourceOpenStack.py

    cat cloudinit/sources/DataSourceOpenStack.py | grep VALID_DMI_ASSET_TAGS

    确认执行结果如下图,表示语句添加成功。

  5. 按照操作系统类型,执行相应的命令安装Cloud-Init安装包。
    • CentOS6.x/SUSE11.x:

      python setup.py build

      python setup.py install --init-system sysvinit

    • CentOS7.x/SUSE12.x:

      python setup.py build

      python setup.py install --init-system systemd

    Cloud-Init安装时需要添加syslog用户到adm组。存在syslog用户时直接添加syslog用户到adm组。不存在syslog用户时(如CentOS和SUSE),执行下列命令创建syslog用户,添加到adm组:

    useradd syslog

    groupadd adm

    usermod -g adm syslog

  6. 设置Cloud-Init相关服务为开机自启动。
    • 若操作系统是sysvinit自启动管理服务,则执行以下命令进行设置。

      chkconfig --add cloud-init-local; chkconfig --add cloud-init; chkconfig --add cloud-config; chkconfig --add cloud-final

      chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on

      service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status

    • 若操作系统是systemd自启动管理服务,则执行以下命令进行设置。

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

  7. 执行如下命令检查Cloud-Init是否安装成功。

    cloud-init -v

    cloud-init init --local

    回显如下类似信息所示表示安装Cloud-Init成功。

    cloud-init 0.7.6

配置Cloud-Init工具

  1. 设置开放root密码远程登录并开启root用户的ssh权限。
    以CentOS 6.7系列操作系统为例,在“/etc/cloud/cloud.cfg”设置“disable_root”值为“0”表示不禁用(部分OS的Cloud-Init配置使用“true”表示禁用,“false”表示不禁用),设置“ssh_pwauth”“1”启用密码远程登录,“lock_passwd”设置为“False”表示不锁住用户密码。
    users:
     - name: root
       lock_passwd: False
    
    disable_root: 0
    ssh_pwauth: 1
    • 若用户选择注入密码,则通过自己注入的密码进行远程SSH或noVNC登录。
    • 若用户选择注入密钥,则通过自己注入的密钥进行远程SSH登录。
  1. 在配置文件“/etc/cloud/cloud.cfg”中禁用Cloud-Init接管网络。

    当Cloud-Init版本等于或高于0.7.9版本时,在配置文件“/etc/cloud/cloud.cfg”中增加如下内容,禁用Cloud-Init接管网络。

    图1 禁用Cloud-Init接管网络

    增加的内容需严格按照yaml格式进行配置。

  2. 配置agent访问OpenStack数据源。
    在“/etc/cloud/cloud.cfg”最后一行添加如下内容,配置agent访问OpenStack数据源。
    datasource_list: [ OpenStack ]
    datasource:
      OpenStack:
        metadata_urls: ['http://169.254.169.254']
        max_wait: 120
        timeout: 5
        apply_network_config: false
    • max_wait和timeout可由用户自定义是否需要配置,上述回显信息中max_wait和timeout的取值仅供参考。
    • 当操作系统版本低于Debian8、CentOS 5时,不支持配置agent访问OpenStack数据源。
    • CentOS、EulerOS操作系统云服务器必须要禁用默认的zeroconf路由,以便精确访问OpenStack数据源。

      echo "NOZEROCONF=yes" >> /etc/sysconfig/network

    • apply_network_config: false为可选项,对于使用Cloud-Init 18.3及以上版本的用户,需添加此配置项。
  3. 在配置文件“/etc/cloud/cloud.cfg”中补充如下内容。

    manage_etc_hosts: localhost

    防止启动云服务器时,系统长时间卡在“Waiting for cloudResetPwdAgent”状态。

    图2 新增manage_etc_hosts: localhost
  4. 执行vi /etc/ssh/sshd_config命令,在vi编辑器中打开“/etc/ssh/sshd_config”。
    将“sshd_config”中的“PasswordAuthentication”的值修改为“yes”。

    如果是SUSE和openSUSE操作系统,需要同时配置“sshd_config”文件中的以下两个参数为“yes”。

    • PasswordAuthentication
    • ChallengeResponseAuthentication
  5. 修改cloud.cfg配置文件里面的cloud_init_modules配置。
    • 将ssh从最后提前到第一位处理,提高云服务器ssh登录速度。
    • 开启机器名更新机制,请勿注释或删除“ - update_hostname”语句。
      cloud_init_modules:
       - ssh
       - migrator
       - bootcmd
       - write-files
       - growpart
       - resizefs
       - set_hostname
       - update_hostname
       - update_etc_hosts
       - rsyslog
       - users-groups
  6. 修改以下配置使得镜像创建的云服务器主机名不带“.novalocal”后缀且主机名称中可以带点号。
    1. 执行如下命令,修改“__init__.py”文件。

      vi /usr/lib/python*.*/site-packages/cloudinit/sources/__init__.py

      不同OS安装的python版本有差异,请选择对应的路径。

      按“i”进入编辑模式,根据关键字toks查询,修改内容如下信息所示。

      if toks:
          toks = str(toks).split('.')
      else:
          #toks = ["ip-%s" % lhost.replace(".", "-")] #屏蔽此行
          toks = lhost.split(".novalocal")    #增加此行
      
      if len(toks) > 1:
          hostname = toks[0]
          #domain = '.'.join(toks[1:]) #屏蔽此行
      else:
          hostname = toks[0]
      
      if fqdn and domain != defdomain:
           return hostname   
          #return "%s.%s" % (hostname, domain) #屏蔽此行
      else:
          return hostname

      修改完成后按“ESC”退出编辑模式,输入:wq!保存并退出。

    2. 执行如下命令进入“cloudinit/sources”文件夹。

      cd /usr/lib/python*.*/site-packages/cloudinit/sources/

      不同OS安装的python版本有差异,请选择对应的路径。

    3. 执行如下命令,删除“__init__.pyc”文件和优化编译后的“__init__.pyo”文件。

      rm -rf __init__.pyc

      rm -rf __init__.pyo

    4. 执行如下命令,清理日志信息。

      rm -rf /var/lib/cloud/*

      rm -rf /var/log/cloud-init*

      删除/etc/cloud/cloud.cfg.d/目录下除了log相关配置文件外的所有文件。

  7. 执行以下命令编辑Cloud-Init日志输出路径配置文件,设置日志处理方式handlers,建议配置为cloudLogHandler。

    vim /etc/cloud/cloud.cfg.d/05_logging.cfg

    [logger_cloudinit]
    level=DEBUG
    qualname=cloudinit
    handlers=cloudLogHandler
    propagate=1
  8. 确保删除镜像模板中已经存在的linux账户和“/home/linux”目录。

    userdel linux

    rm -fr /home/linux

  9. 确保Cloud-Init启用。

    若存在/etc/cloud/cloud-init.disabled文件,则执行cloud-init clean --machine-id,否则跳过。

检查Cloud-Init工具相关配置是否成功

执行以下命令,无错误发生,说明Cloud-Init配置成功。

cloud-init init --local

正确安装的Cloud-Init会显示Cloud-Init的版本详细信息,并且无任何错误信息。例如,正确安装的情况下,不含有缺少文件的提示信息。

执行如下命令,可将系统用户密码有效期设置为最大。此操作可选。

chage -M 99999 $user_name

其中,user_name为系统用户,例如root账户。

密码有效期建议设置为99999。

相关文档