tencent cloud

云服务器

动态与公告
产品动态
公共镜像更新动态
操作系统官方停止维护计划
产品公告
产品简介
云服务器概述
产品优势
基本概念
地域和可用区
新手指引
Service Regions and Service Providers
产品计费
计费概述
计费方式
计费项
转换计费方式
购买实例
变配费用说明
欠费说明
快速入门
通过自定义配置购买 Linux 云服务器
通过自定义配置购买 Windows 云服务器
用户指南
操作指南总览
使用限制总览
实例
竞价实例
预留实例
镜像
存储
备份与恢复
网络
安全
密码/密钥
监控与告警
运维管理
便捷功能
迁移服务器
在线迁移
迁移咨询
故障处理
无法登录云服务器问题处理思路
Windows 实例登录相关故障
Linux 实例登录相关故障
其他实例登录相关故障
实例运行故障
Linux 实例内存故障
网络故障
实践教程
云服务器选型建议
搭建环境
搭建网站
搭建应用
搭建可视化界面
本地文件上传到云服务器
网络性能测试
其他实践教程
API 文档
History
Introduction
API Category
Making API Requests
Region APIs
Instance APIs
Cloud Hosting Cluster APIs
Image APIs
Instance Launch Template APIs
Placement Group APIs
Key APIs
Security Group APIs
Network APIs
Data Types
Error Codes
安全与合规
访问管理
网络
常见问题
地域和可用区相关
计费相关
实例相关
存储相关
镜像相关
服务器迁移相关
网络相关
安全相关
操作系统相关
运维和监控相关
访问管理相关
NTP 服务相关
应用场景相关
服务协议
CVM Service Level Agreements
Red Hat Enterprise Linux 镜像服务协议
Public IP Service Level Agreement
词汇表

Linux 系统安装 cloud-init

PDF
聚焦模式
字号
最后更新时间: 2025-07-14 15:22:00

操作场景

Cloud-init 主要提供实例首次初始化时自定义配置的能力。如果导入的镜像没有安装 cloud-init 服务,基于该镜像启动的实例将无法被正常初始化,导致该镜像正常导入失败。本文档指导您安装 cloud-init 服务。 安装 cloud-init 推荐以下三种方式:

前提条件

安装 cloud-init 的服务器可正常访问外网。

操作步骤

下载 cloud-init 二进制包
手工下载 cloud-init 源码包方式
使用软件源上的 cloud-init 包方式
说明:
cloud-init 依赖于 qcloud-python, qcloud-python 是腾讯云重新编译打包的软件包,是单独的 python 环境,仅用于 cloud-init 运行环境,安装在 /usr/local/qcloud/python 目录下,与系统中默认的 python 不相冲突。
cloud-init 是腾讯云基于社区20.1版本研发的,适配腾讯云运行环境的专属 cloud-init。
cloud-init 二制包支持如下 OS:
类型
OS
版本
x86_64
arm64
qcloud-python
cloud-init
qcloud-python
cloud-init
rpm
CentOS
7
8
Fedora
36
NA
NA
Kylin
20sp1
openSUSE
15.4
NA
NA
deb
Debian
11
10
NA
NA
9
NA
NA
8
NA
NA
Ubuntu
22.04
NA
NA
20.04
18.04
16.04
NA
NA

下载 cloud-init 二进制包

1. 下载上述安装包。
2. 如果系统中已经有 cloud-init,请排查并执行如下命令,清理残留。
rm -rf /var/lib/cloud
rm -rf /etc/cloud
rm -rf /usr/local/bin/cloud*
3. 根据操作系统,执行如下命令:
deb 系列,执行以下命令:
dpkg -i *.deb
rpm 系列, 执行如下命令:
rpm -ivh *.rpm
4. 查询版本是否正确安装。
cloud-init qcloud -v
/usr/bin/cloud-init qcloud 0011
5. 重启后生效。

下载 cloud-init 源码包

说明:
在正常安装的情况下,cloud-init-20.1.0011 版本与腾讯云的兼容性最佳,可以保证使用该镜像创建的云服务器的所有配置项都可以正常初始化。建议选择 cloud-init-20.1.0011.tar.gz 安装版本。您也可以 点此获取 其他版本的 cloud-init 源码包。本文以 cloud-init-20.1.0011 版本为例。
执行以下命令,下载 cloud-init 源码包。
wget https://gerryguan-1306210569.cos.ap-chongqing.myqcloud.com/cloud-init/src/cloud-init-20.1.0011.tar.gz

安装 cloud-init

1. 执行以下命令,解压 cloud-init 安装包。
说明:
如果您使用的操作系统为 Ubuntu,请切换至 root 账号。
tar -zxvf cloud-init-20.1.0011.tar.gz
2. 执行以下命令,进入已解压的 cloud-init 安装包目录(即进入 cloud-init-20.1.0011 目录)。
cd cloud-init
3. 根据操作系统版本,安装 Python-pip。
CentOS 6/7系列,执行以下命令:
yum install python3-pip -y
Ubuntu 系列,执行以下命令:
apt-get -y install python3-pip
若在安装时,出现无法安装或找不到安装包的错误,可参考 解决无法安装 Python-pip 问题 进行处理。
4. 执行以下命令,升级 pip。
python3 -m pip install --upgrade pip
5. 执行以下命令,安装依赖包。
注意:
Cloud-init 依赖组件 requests 2.20.0版本后,已弃用 Python2.6。如果镜像环境的 Python 解释器为 Python2.6及以下,在安装 cloud-init 依赖包之前,请执行 pip install 'requests<2.20.0' 命令,安装 requests 2.20.0 版本以下的版本。
pip3 install -r requirements.txt
6. 根据操作系统版本,安装 cloud-utils 组件。
CentOS 6系列,执行以下命令:
yum install cloud-utils-growpart dracut-modules-growroot -y
dracut -f
CentOS 7系列,执行以下命令:
yum install cloud-utils-growpart -y
Ubuntu 系列,执行以下命令:
apt-get install cloud-guest-utils -y
7. 执行以下命令,安装 cloud-init。
python3 setup.py build
python3 setup.py install --init-system systemd
注意:
--init-system 的可选参数有:(systemd, sysvinit, sysvinit_deb, sysvinit_freebsd, sysvinit_openrc, sysvinit_suse, upstart) [default: None]。请根据当前操作系统使用的自启动服务管理方式,进行选择。若选择错误,cloud-init 服务会无法开机自启动。
centos6 及以下系统请选择 sysvinit,centos7 及以上系统请选择 systemd。本文以 systemd 自启动服务管理为例。

修改 cloud-init 配置文件

1. 根据不同操作系统,下载 cloud.cfg。
点此下载 Ubuntu 操作系统的 cloud.cfg。
点此下载 CentOS 操作系统的 cloud.cfg。
2. /etc/cloud/cloud.cfg 的内容替换为已下载的 cloud.cfg 文件内容。

添加 syslog 用户

执行以下命令,添加 syslog 用户。
useradd syslog

设置 cloud-init 服务开机自启动

若操作系统是 systemd 自启动管理服务,则执行以下命令进行设置。
说明:
您可执行 strings /sbin/init | grep "/lib/system" 命令,若有返回信息,则操作系统是 systemd 自启动管理服务。
针对 Ubuntu 或 Debian 操作系统,需执行以下命令。
ln -s /usr/local/bin/cloud-init /usr/bin/cloud-init
所有操作系统都需执行以下命令。
systemctl enable cloud-init-local.service
systemctl start cloud-init-local.service
systemctl enable cloud-init.service
systemctl start cloud-init.service
systemctl enable cloud-config.service
systemctl start cloud-config.service
systemctl enable cloud-final.service
systemctl start cloud-final.service
systemctl status cloud-init-local.service
systemctl status cloud-init.service
systemctl status cloud-config.service
systemctl status cloud-final.service
针对 CentOS 和 Redhat 操作系统,需执行以下命令。 将 /lib/systemd/system/cloud-init-local.service 文件替换为如下内容:
[Unit]
Description=Initial cloud-init job (pre-networking)
Wants=network-pre.target
After=systemd-remount-fs.service
Before=NetworkManager.service
Before=network-pre.target
Before=shutdown.target
Conflicts=shutdown.target
RequiresMountsFor=/var/lib/cloud
[Service]
Type=oneshot
ExecStart=/usr/bin/cloud-init init --local
ExecStart=/bin/touch /run/cloud-init/network-config-ready
RemainAfterExit=yes
TimeoutSec=0
# Output needs to appear in instance console output
StandardOutput=journal+console
[Install]
WantedBy=cloud-init.target
将 /lib/systemd/system/cloud-init.service 文件替换为以下内容:
[Unit]
Description=Initial cloud-init job (metadata service crawler)
Wants=cloud-init-local.service
Wants=sshd-keygen.service
Wants=sshd.service
After=cloud-init-local.service
After=systemd-networkd-wait-online.service
After=networking.service
After=systemd-hostnamed.service
Before=network-online.target
Before=sshd-keygen.service
Before=sshd.service
Before=systemd-user-sessions.service
Conflicts=shutdown.target
[Service]
Type=oneshot
ExecStart=/usr/bin/cloud-init init
RemainAfterExit=yes
TimeoutSec=0
# Output needs to appear in instance console output
StandardOutput=journal+console
[Install]
WantedBy=cloud-init.target
若操作系统是 sysvinit 自启动管理服务,则执行以下命令进行设置。
说明:
您可执行 strings /sbin/init | grep "sysvinit" 命令,若有返回信息,则操作系统是 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

安装 cloud-init

执行以下命令,安装 cloud-init。
apt-get/yum install cloud-init
说明:
通过 apt-get 或 yum 命令安装的 cloud-init 默认为当前操作系统配置的软件源中默认的 cloud-init 版本。使用该方式安装的镜像创建的实例可能会存在部分配置项初始化不符合预期的情况,建议使用 手工下载 cloud-init 源码包方式 进行安装。

修改 cloud-init 配置文件

1. 根据不同操作系统,下载 cloud.cfg。
点此下载 Ubuntu 操作系统的 cloud.cfg。
点此下载 CentOS 操作系统的 cloud.cfg。
2. /etc/cloud/cloud.cfg 的内容替换为已下载的 cloud.cfg 文件内容。

相关操作

注意:
以下操作执行完成后,请勿重启服务器,否则需重新执行下以下操作。
1. 执行以下命令,检查 cloud-init 相关配置是否成功。
cloud-init init --local
返回类似如下信息,则说明已成功配置 cloud-init。
Cloud-init v. 20.1.0011 running 'init-local' at Fri, 01 Apr 2022 01:26:11 +0000. Up 38.70 seconds.
2. 执行以下命令,删除 cloudinit 的缓存记录。
rm -rf /var/lib/cloud
3. 针对 Ubuntu 或 Debian 操作系统,需执行以下命令。
rm -rf /etc/network/interfaces.d/50-cloud-init.cfg
4. 针对 Ubuntu 或 Debian 操作系统,需将 /etc/network/interfaces 修改为以下内容:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*

附录

解决无法安装 Python-pip 问题

若在安装 Python-pip 出现无此安装包或无法安装的错误,可对应实际使用的操作系统,参考以下步骤进行解决:
CentOS 6/7系列
Ubuntu 系列
1. 执行以下命令,设置 EPEL 存储库。
yum install epel-release -y
2. 执行以下命令,安装 Python-pip。
yum install python3-pip -y
1. 执行以下命令,清除缓存。
apt-get clean all
1. 执行以下命令,更新软件包列表。
apt-get update -y
2. 执行以下命令,安装 Python-pip。
apt-get -y install python3-pip


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈