【发布时间】:2021-06-02 13:23:50
【问题描述】:
我创建了一个 cloudformation 脚本,它创建了一个 ec2 实例,以及其他一些功能。初始化 ec2 实例后,我希望它自动运行 bash 脚本以将在脚本中创建的卷(不是根卷)挂载到 /var/www/vhosts。但目前它创建了目录,所以我知道它正在运行 bash 脚本,但没有成功执行其他命令。这是我的 cloudformation 脚本。当我在 ssh 到 ec2 实例时分别运行下面列出的 3 个命令时,它们工作正常并且卷已安装到正确的位置。
"Ec2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": {
"Ref": "ImageIdentification"
},
"AvailabilityZone" : "eu-west-1a",
"InstanceType": {
"Ref": "InstanceType"
},
"SecurityGroupIds" : [
{
"Ref": "SecurityGroup"
}
],
"DisableApiTermination" : "true",
"KeyName": {
"Ref": "keyPairName"
},
"Tags" : [
{"Key" : "Name", "Value" : { "Ref" : "EC2InstanceName"}}
],
"UserData" : {"Fn::Base64" : {"Fn::Join" : ["", [
"#!/bin/bash -v\n",
"sudo mkdir -p /var/www/vhosts\n",
"sudo mkfs -t ext4 /dev/xvdh\n",
"sudo mount /dev/xvdh /var/www/vhosts\n"
]]}}
}
},
感谢您的帮助。
【问题讨论】:
-
运行用户数据脚本的服务称为
cloud-init。检查服务器上的 cloud-init 日志以查看问题所在:stackoverflow.com/questions/18691867/… -
@MarkB 感谢您的帮助。这非常适合故障排除。对于正在阅读本文的任何人,我运行命令“vim /var/log/cloud-init-output.log”来查看日志。我还在 bash 脚本中添加了 sleep 命令,并在 ec2 实例中添加了 volume 属性。
标签: amazon-web-services amazon-cloudformation