GitLab Runner场景下aws_instance的user_data启动未执行问题求助
AWS EC2实例user_data脚本不执行排查方向
- Terraform配置校验
- 新增
user_data_replace_on_change = true参数到aws_instance资源块中:user_data默认仅在实例首次创建启动时执行,修改user_data不会触发实例重建,新增该参数后修改user_data会自动销毁重建实例,触发脚本执行。 - 校验user_data大小不超过16KB,AWS EC2对user_data的容量上限为16KB,超出部分会被自动截断导致脚本无法正常解析。
- 新增
- 脚本格式与内容校验
- 确认脚本首行shebang声明无多余字符,如前置空格、特殊符号,Windows系统编写的脚本默认使用
\r\n换行符,Linux环境无法识别,可通过dos2unix命令转换为\n换行符后再测试。 - 引用外部脚本时,确认本地脚本文件有可读权限,Terraform可以正常读取文件内容。
- 确认脚本首行shebang声明无多余字符,如前置空格、特殊符号,Windows系统编写的脚本默认使用
- 实例侧日志排查
- SSH登录实例查看cloud-init执行日志,默认日志路径为
/var/log/cloud-init.log和/var/log/cloud-init-output.log,日志会明确记录脚本执行的报错信息。 - 你测试用的
touch yayitworks命令会在root用户的家目录/root/下生成文件,不要到普通用户的家目录下查找,避免误判脚本未执行。
- SSH登录实例查看cloud-init执行日志,默认日志路径为
- 镜像兼容性校验
- 你使用的
ami-09e67e426f25ce0d7为Ubuntu 20.04官方镜像,默认已开启cloud-init服务,如果你后续使用自定义AMI,需要确认cloud-init服务未被禁用,否则不会触发user_data执行。
- 你使用的
内容的提问来源于stack exchange,提问作者9rnt
相关产品推荐
相关产品推荐

