CentOS裸金属环境下cloud-init仅执行重启命令的配置方法
CentOS裸金属环境下用cloud-init仅执行指定命令的配置步骤
1. 确认cloud-init已安装
未安装的话直接通过yum安装:yum install -y cloud-init
2. 修改cloud.cfg,指定NoCloud数据源并禁用多余模块
编辑/etc/cloud/cloud.cfg,按以下内容调整:
# 指定数据源为NoCloud datasource_list: [NoCloud] datasource: NoCloud: # 本地配置文件存储路径,后续将在此创建配置文件 seedfrom: /var/lib/cloud/seed/nocloud/ # 禁用元数据网络查询,裸金属环境无需此操作 disable_metadata: true # 仅保留必要模块,禁用其他默认模块 cloud_config_modules: - runcmd cloud_final_modules: - [scripts-user, always] # 不需要默认创建用户时添加此配置 users: [] disable_root: false ssh_pwauth: false # 彻底禁用网络配置模块 network: config: disabled
3. 创建NoCloud的配置文件
先创建数据源目录:mkdir -p /var/lib/cloud/seed/nocloud/
创建meta-data文件
该文件可仅定义实例ID,或直接为空:echo "instance-id: nocloud-local-01" > /var/lib/cloud/seed/nocloud/meta-data
创建user-data(核心执行命令配置)
文件首行必须是#cloud-config,用于cloud-init识别:
#cloud-config runcmd: - touch /root/hello.txt
如果需要每次重启都执行该命令,将runcmd替换为bootcmd即可(runcmd默认仅在首次启动执行一次)
4. 重置cloud-init状态(首次配置必须执行)
cloud-init会记录初始化状态,不重置的话重启可能不会触发配置执行:
cloud-init clean --logs cloud-init init --local
5. 重启验证
重启服务器:reboot
重启后检查目标文件是否存在:ls -l /root/hello.txt
内容的提问来源于stack exchange,提问作者Lorenzo Bassi
相关产品推荐
相关产品推荐

