$ terraform version
Terraform v0.14.4
我正在使用Terraform创建一个AWS自动缩放组,它通过同样由Terraform计划创建的启动模板成功地启动了EC2。我在启动模板中添加了以下user_data
定义。我使用的AMI已经配置了Docker,并且有我需要的Docker映像。
user_data = filebase64("${path.module/docker_run.sh}")
并且docker_run.sh
文件包含简单
docker run -p 80:3000 -d 1234567890.dkr.ecr.us-east-1.amazonaws.com/node-app:latest
但是,当我ssh到EC2实例时,容器没有运行。我错过了什么?
更新:根据Marcin的评论,我在in /var/log/cloud-init-output.log
中看到了以下内容
Jan 11 22:11:45 cloud-init[3871]: __init__.py[WARNING]: Unhandled non-multipart (text/x-not-multipart) userdata: 'docker run -p 80:3000 -d...'
根据AWS文档和您发布的内容,可能的原因是您的docker_run.sh
:中缺少/bin/bash
用户数据外壳脚本必须以#开始!字符和要读取脚本的解释器的路径(通常为/bin/bash(。
因此,您的docker_run.sh
应该是:
#!/bin/bash
docker run -p 80:3000 -d 1234567890.dkr.ecr.us-east-1.amazonaws.com/node-app:latest
如果仍然失败,请检查实例上的/var/log/cloud-init-output.log
是否存在错误。