如何在CentOS 7裸金属服务器上手动运行cloud-init用户数据脚本?
可行的手动运行cloud-config方法(CentOS 7)
前提准备
- 确保cloud-init已安装,未安装则执行:
yum install -y cloud-init - 将你的cloud-config用户数据保存到本地文件,比如
/tmp/user-data,必须以#cloud-config作为文件第一行
方法1:按需执行指定模块
如果只需要运行cloud-config中的特定模块(比如runcmd、packages),可以直接用cloud-init single指定模块:
- 执行包安装/更新模块:
cloud-init single --name=package_update_upgrade_install - 执行自定义命令模块:
cloud-init single --name=runcmd - 可用模块列表可通过
cloud-init modules --list查看
方法2:全流程执行完整cloud-config
如果需要完整执行cloud-config的所有配置(包括用户创建、SSH密钥配置等),按以下步骤操作:
- 重置cloud-init状态:cloud-init默认仅首次启动运行,需清理已生成的状态文件:
rm -rf /var/lib/cloud/* - 配置File数据源:创建配置文件指定用户数据路径:
cat > /etc/cloud/cloud.cfg.d/90_datasource.cfg <<EOF datasource_list: [ File ] datasource: File: path: /tmp/user-data EOF - 执行全流程初始化:
也可直接重启服务器,cloud-init会在启动时自动读取指定用户数据并执行cloud-init init cloud-init modules --mode=config cloud-init modules --mode=final
注意事项
- 执行前请备份服务器重要数据,避免cloud-config中的配置(如用户删除、文件覆盖)造成数据丢失
- 所有操作需以
root用户执行 - CentOS 7自带的cloud-init版本较旧,部分新特性可能不支持,若遇兼容性问题,可尝试升级cloud-init(需注意依赖兼容性)
内容的提问来源于stack exchange,提问作者alex suru
相关产品推荐
相关产品推荐

