启动配置用户数据 shell 脚本不会 运行 来自 Cloudformation
Launch Configuration Userdata shell scripts doesn't run from Cloudformation
我正在尝试 运行 shell 来自 AWS Cloudformation 模板中启动配置的用户数据的脚本。我用里面的一些脚本创建了 AMI。
以下是 LaunchConfiguration 的 Cloudformation 模板示例:
"ProcessLC": {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
"ImageId": {"Ref" : "GeneralAMI"},
"InstanceType" : "t2.medium",
"SecurityGroups" : [{"Ref": "SecurityGroup"}],
"KeyName" : {"Ref": "KeyPair"},
"UserData": {"Fn::Base64": {"Fn::Join": ["", [
{"Fn::Join": ["", ["Env=",{"Ref": "Env"}," \n"]]},
{"Fn::Join": ["", ["DBConn=", {"Ref": "Database"}," \n"]]},
{"Fn::Join": ["", ["DBEngine=", {"Ref": "Metabase"}," \n"]]},
"#!/bin/bash\n",
"cd /project/\n",
"./stop.sh\n",
"./vpcAssignIP.sh\n"
]
]
}
}
}
}
当我创建堆栈时,它不会 运行(正如我在日志“/var/log/cloud-init.log”中看到的那样)。
我做错了什么?
谢谢!
将此行放在顶部,而不是再往下:
“#!/bin/bash\n”。该行告诉它将整个脚本作为 bash 命令处理。它必须是第一行。 (所以,在你的加入中,如果你把它放在“”而不是加入之后,你应该是好的。)
编辑:
对于您的加入,这应该有效:
"UserData": {"Fn::Base64": {"Fn::Join": ["", [
"#!/bin/bash\n",
{"Fn::Join": ["", ["Env=",{"Ref": "Env"}," \n"]]},
{"Fn::Join": ["", ["DBConn=", {"Ref": "Database"}," \n"]]},
{"Fn::Join": ["", ["DBEngine=", {"Ref": "Metabase"}," \n"]]},
"cd /project/\n",
"./stop.sh\n",
"./vpcAssignIP.sh\n"
]
我正在尝试 运行 shell 来自 AWS Cloudformation 模板中启动配置的用户数据的脚本。我用里面的一些脚本创建了 AMI。
以下是 LaunchConfiguration 的 Cloudformation 模板示例:
"ProcessLC": {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
"ImageId": {"Ref" : "GeneralAMI"},
"InstanceType" : "t2.medium",
"SecurityGroups" : [{"Ref": "SecurityGroup"}],
"KeyName" : {"Ref": "KeyPair"},
"UserData": {"Fn::Base64": {"Fn::Join": ["", [
{"Fn::Join": ["", ["Env=",{"Ref": "Env"}," \n"]]},
{"Fn::Join": ["", ["DBConn=", {"Ref": "Database"}," \n"]]},
{"Fn::Join": ["", ["DBEngine=", {"Ref": "Metabase"}," \n"]]},
"#!/bin/bash\n",
"cd /project/\n",
"./stop.sh\n",
"./vpcAssignIP.sh\n"
]
]
}
}
}
}
当我创建堆栈时,它不会 运行(正如我在日志“/var/log/cloud-init.log”中看到的那样)。 我做错了什么?
谢谢!
将此行放在顶部,而不是再往下: “#!/bin/bash\n”。该行告诉它将整个脚本作为 bash 命令处理。它必须是第一行。 (所以,在你的加入中,如果你把它放在“”而不是加入之后,你应该是好的。)
编辑: 对于您的加入,这应该有效:
"UserData": {"Fn::Base64": {"Fn::Join": ["", [
"#!/bin/bash\n",
{"Fn::Join": ["", ["Env=",{"Ref": "Env"}," \n"]]},
{"Fn::Join": ["", ["DBConn=", {"Ref": "Database"}," \n"]]},
{"Fn::Join": ["", ["DBEngine=", {"Ref": "Metabase"}," \n"]]},
"cd /project/\n",
"./stop.sh\n",
"./vpcAssignIP.sh\n"
]