Cloud-Init 是一个开源工具,运行在云服务器实例内部的一个非常驻服务,在开机启动时执行,执行完成立即退出,不会监听任何端口。
腾讯云的 Linux 公有镜像都预安装了 Cloud-Init 服务。由于 Cloud-Init 服务主要用于实现对 CVM 实例的初始化操作(例如,对 DNS,Hostname,IP 等信息的配置),以及执行一些用户在创建 CVM 实例时指定首次开机启动要执行的自定义脚本,因此需要以 root 用户运行 Cloud-Init 服务。
首先请登录实例,依次执行以下命令,观察是否报错。显示执行结果则服务正常运行,否则会提示错误原因,请根据提示进行问题排查。
rm -rf /var/lib/cloud
cloud-init init --local
cloud-init init
cloud-init modules --mode=config
cloud-init modules --mode=final
腾讯云通过 Cloud-Init 实现了实例的所有初始化操作,使得整个实例内部的操作更加的透明。以下内容简单介绍了相关操作情况,更多详情可见 Cloud-init 官方文档。
初始化类型 | 默认行为 | 禁用方式 | 注意事项 |
---|---|---|---|
hostname 的初始化 | 实例首次启动时,Cloud-Init 会根据 vendor_data.json 中的 hostname 信息来设置实例的 hostname。 |
当您使用自定义镜像创建或重装实例时,您想保持自定义镜像内部自定义的 hostname 设置,可以在制作自定义镜像之前在 /etc/cloud/cloud.cfg 里面删除 - scripts-user 这行配置。 |
如果您禁用了 - scripts-user 这行配置,实例内部的 /var/lib/cloud/instance/scripts/runcmd 初始化脚本将不会被执行,并会同时影响其他子项的初始化(主要涉及:云监控、云安全的安装、软件源的设置)。 同时,在您创建子机时,自定义脚本也不会被执行。 |
/etc/hosts 的初始化 | 实例首次启动时,Cloud-Init 会默认将 /etc/hosts 初始化为 127.0.0.1 $hostname 。 |
当您使用自定义镜像创建或重装实例时,您想保持自定义镜像内部自定义的 /etc/hosts 设置,可以在制作自定义镜像之前在 /etc/cloud/cloud.cfg 里面删除 - scripts-user 与 - ['update_etc_hosts', 'once-per-instance'] 这两行配置。 |
|
DNS 的初始化(非 DHCP 场景) | 实例首次启动时,Cloud-Init 会根据 vendor_data.json 中的 nameservers 信息来设置实例的 DNS。 |
当您使用自定义镜像创建或重装实例时,您想保持自定义镜像内部自定义的 DNS 设置,可以在制作自定义镜像之前在 /etc/cloud/cloud.cfg 里面删除 - resolv_conf 与 unverified_modules: ['resolv_conf'] 两行配置。 |
无。 |
软件源的初始化 | 实例首次启动时,Cloud-Init 会根据 vendor_data.json 中的 write_files 信息来设置实例的软件源。 | 当您使用自定义镜像创建或重装实例时,您想保持自定义镜像内部自定义的软件源设置,可以在制作自定义镜像之前在 /etc/cloud/cloud.cfg 里面删除 - write-files 这行配置。 |
无。 |
NTP 的初始化 | 实例首次启动时,Cloud-Init 会根据 vendor_data.json 中的 NTP Server 信息来设置实例的 NTP 服务器配置,并拉起 NTP Service。 |
当您使用自定义镜像创建或重装实例时,您想保持自定义镜像内部自定义的 NTP 设置,可以在制作自定义镜像之前在 /etc/cloud/cloud.cfg 里面删除 - ntp |
无。 |
密码的初始化 | 实例首次启动时,Cloud-Init 会根据 vendor_data.json 中的 chpasswd 信息来设置实例的默认账号密码。 |
当您使用自定义镜像创建或重装实例时,您想保持自定义镜像内部自定义的默认账号密码,可以在制作自定义镜像之前在 /etc/cloud/cloud.cfg 里面删除 - set-passwords 这行配置。 |
无。 |
密钥绑定 | 实例首次启动时,Cloud-Init 会根据 vendor_data.json 中的 ssh_authorized_keys 信息来设置实例的默认账号密钥。 |
当您使用自定义镜像创建或重装实例时,您想保持自定义镜像内部自定义的密钥,可以在制作自定义镜像之前在 /etc/cloud/cloud.cfg 里面删除 - users-groups 这行配置。 |
如果您通过手工的方式在实例内部自行绑定密钥,在通过控制台下发密钥绑定的操作时,系统会将此密钥覆盖。 |
网络初始化(非 DHCP 场景) | 实例首次启动时,Cloud-Init 会根据 network_data.json 中的信息来设置实例的 IP、GATEWAY、MASK 等。 |
当您使用自定义镜像创建或重装实例时,您想保持自定义镜像内部自定义的网络信息,可以在制作自定义镜像之前在 /etc/cloud/cloud.cfg 里面增加 network: {config: disabled} 这行配置。 |
无。 |
Traceback (most recent call last):
File "/usr/bin/cloud-init", line 5, in
********
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pyyaml
/usr/bin/python
与 /bin/python
这两个软连链向 Python2)。当用户业务有需要时,可能会在实例内部把 Python 的默认解释器改为 Python3(即修改 /usr/bin/python
与 /bin/python
这两个软连,使其指向 Python3)。由于兼容性问题,导致在开机启动执行 Cloud-Init 时报错。/usr/bin/cloud-init
文件中指定的 Python 解释器,将 #/usr/bin/python
或#/bin/python
修改为 #! user/bin/python
。
注意:不要使用软连接,直接指向具体的解释器。
与 Cloud-Init 相似,Cloudbase-Init 是与 Windows 云服务器实例通信的桥梁。 在实例首次启动的时候会执行 Cloudbase-Init 服务,该服务会读取出实例的初始化配置信息,并对实例进行初始化操作。同时包括后续的重置密码、修改 IP 等功能也都是通过 Cloudbase-Init 来实现的。
说明:若您忘记密码或因为 Cloudbase-Init 服务异常重置密码失败,可通过 步骤 2 进行密码重置。
云服务器 最便宜多少钱一台? 云服务器 的价格主要由配置决定,配置越低,价格也...
两周前,很多人在网上看了微软全球技术大会Ignite 2021,看到了很多亮眼的技术,...
阿里云智慧校园解决方案让教育教学全场景数据贯通 用人工智能使师生减负增效 促...
“智慧校园”建设着眼于未来校园IT规划 无论是教学、科研 还是决策、管理 都可以...
买 高防服务器 哪里便宜?高防服务器的价格,是根据服务器防护能力和服务器配置...
客户简介 大姨吗问世于2012年,是一款以经期健康为核心,关爱女性健康的手机应用...
近期,阿里云数据安全中心通过中国信通院数据安全产品能力验证测试,数据脱敏、...
通过使用弹性伸缩所提供的接口,您可以完整的使用弹性伸缩的所有功能,例如创建...
经过六十余年的发展,人工智能(AI)及 机器学习(ML)已经成为新一轮产业变革的...
SAP CEO孟鼎铭(Bill McDermott) 钛媒体注:6月20日,全球首席执行官委员会第七届...