安装Cloud-Init FAQ
为了保证使用私有镜像创建的新云服务器可以自定义配置(例如修改云服务器密码),请在创建私有镜像前安装Cloud-Init工具。
安装Cloud-Init相关操作请参考:安装Cloud-Init工具。
配置Cloud-Init相关操作请参考:配置Cloud-Init工具。
本节列举了安装Cloud-Init的常见问题及解决方法。
Ubuntu 16.04/CentOS 7:Cloud-Init设置自启动失败
- 问题描述:
安装Cloud-Init后,执行以下命令设置Cloud-Init为开机自启动时,提示失败:
systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
回显信息如下所示:
图1 设置Cloud-Init自启动失败
- 解决方法:
- 执行以下命令回退配置
systemctl unmask cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
- 执行以下命令,重新设置Cloud-Init为开机自启动
systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
- 执行以下命令,检查Cloud-Init服务状态
systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
回显信息如下所示,提示failed且所有服务的状态都是inactive。
图2 检查Cloud-Init服务状态
图3 检查Cloud-Init服务状态
原因是系统查询Cloud-Init的地址指向/usr/bin/,但是实际安装路径指定的是/usr/local/bin,因此出现了上述错误。
- 执行以下命令,将cloud-init复制至usr/bin目录下。
- 执行以下命令,重启Cloud-Init。
systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
图4 重启Cloud-Init
- 执行以下命令,检查Cloud-Init服务状态。
systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
- 执行以下命令回退配置
Ubuntu 14.04:未安装chkconfig和systemctl
- 问题描述:
- 解决方法:
apt-get update
apt-get install sysv-rc-conf
cp /usr/sbin/sysv-rc-conf /usr/sbin/chkconfig
安装完成后,执行以下命令查看版本号。
cloud-init -v
如果回显信息如下所示:
-bash:/usr/bin/cloud-init:not found this command
解决方法:执行以下命令将cloud-init复制至usr/bin目录下。
cp /usr/local/bin/cloud-init /usr/bin/
Debian 9.5:查看版本号失败和Cloud-Init设置开启自启动失败
- Cloud-Init安装完成后,执行以下命令查看版本号。
回显信息如下所示:
-bash:/usr/bin/cloud-init:not found this command
解决方法:执行命令cp /usr/local/bin/cloud-init /usr/bin/,将cloud-init复制至usr/bin目录下。
- 执行命令cloud-init init --local
回显信息如下所示:
图5 设置Cloud-Init自启动回显信息
原因分析:未安装gcc导致无法编译。
解决方法:
执行以下命令安装gcc后重新安装Cloud-Init。
yum -y install gcc
- 执行以下命令设置Cloud-Init为开机自启动时提示失败:
systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
回显信息提示如下所示:
图6 设置Cloud-Init自启动提示失败
解决方法:
- 执行以下命令回退配置
systemctl unmask cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
- 执行以下命令,重新设置Cloud-Init为开机自启动
systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
- 执行以下命令,重启Cloud-Init
systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
然后执行命令systemctl status查看服务状态。回显信息如下所示:
图7 查看服务状态
- 执行以下命令回退配置
CentOS 7/Fedora 28操作系统:安装Cloud-Init时提示未安装所需的C编译器
- 问题描述
cloud-init init --local
回显信息出现以下警告:
/usr/lib/python2.5/site-packages/Cheetah/Compiler.py:1532: UserWarning: You don't have the C version of NameMapper installed! I'm disabling Cheetah's useStackFrames option as it is painfully slow with the Python version of NameMapper. You should get a copy of Cheetah with the compiled C version of NameMapper. "\nYou don't have the C version of NameMapper installed!
- 原因分析
出现该警告是因为在安装Cloud-Init时,需要编译C版本的NameMapper,但是该系统没有预装gcc,因此无法编译,这才导致C版本的NameMapper缺失。
- 处理方法
yum -y install gcc
然后再重新安装Cloud-Init。