You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform部署VM时cloud-init多部分用户数据仅第一部分执行问题求助

解决cloud-init多部分配置中shell脚本未执行的问题

从你提供的cloud-init.log错误信息里,一眼就能找到问题所在:

Exec format error. Missing #! in script?

问题原因

Linux系统下,要让shell脚本能够被直接执行,必须在脚本的第一行添加shebang(#!)声明,用来指定脚本的解释器(比如bash)。你的init.sh只有一行设置主机名的命令,没有这个开头声明,cloud-init尝试运行它的时候就会抛出"Exec format error"的错误。

修复方案

修改你的init.sh脚本,在最顶部加上shebang行即可,修改后的脚本内容如下:

#!/bin/bash
hostnamectl set-hostname testconfig

额外排查点(如果问题仍存在)

如果修改后还是无法执行,可以检查这两个细节:

  • 脚本的换行符格式:确保是Unix风格的LF,而不是Windows的CRLF(Windows格式的换行可能会导致解释器识别失败)
  • 脚本权限:虽然cloud-init会自动为脚本添加可执行权限,但如果是手动上传脚本的话,要确保它有执行权限(执行chmod +x init.sh)

验证方法

重新运行terraform apply后,登录目标VM,执行hostname命令,应该能看到主机名已经变成testconfig。同时查看/var/log/cloud-init.log,会看到脚本成功执行的日志,不会再出现之前的错误。


内容的提问来源于stack exchange,提问作者zaidwaqi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 20:27:49