Terraform Cloud启动AWS EC2时user_data和remote-exec均无法执行问题
问题解决说明
一、remote-exec连接需要放行的IP
你需要放行的是当前运行Terraform命令的设备的公网出口IP:
- 查IP方法:在执行
terraform apply的设备上运行命令curl ifconfig.me,或者直接通过浏览器搜索「我的公网IP」,即可得到对应IP地址 - 安全组配置:在EC2关联的安全组入站规则中,添加允许该IP(格式为
[查询到的IP]/32)访问22端口的规则即可
二、额外问题排查建议
1. remote-exec I/O超时的其他可能原因
你提供的报错日志中,显示尝试连接的Host为3.137.111.207,但超时地址为52.15.178.40,说明存在EIP绑定时序问题:
- 给执行remote-exec的null_resource添加
depends_on配置,依赖EC2实例和EIP绑定的资源,确保EIP完全绑定到实例后再发起SSH连接 - 可将connection的timeout参数从
1m调整为5m,避免EC2实例未完全启动SSH服务就提前超时
2. user_data未生效的修复方案
相比remote-exec,user_data是更轻量的实例初始化方案,无需额外开放SSH访问权限,未生效大概率是脚本格式问题:
- 你当前的user_data脚本中shebang行
#! /bin/bash存在前导缩进,EC2的cloud-init服务无法识别,需保证该行是脚本第一行,无任何前导空格或缩进 - 若调整后仍有问题,可登录实例查看
/var/log/cloud-init-output.log日志,直接定位user_data执行的具体报错
内容的提问来源于stack exchange,提问作者NikSp
相关产品推荐
相关产品推荐

