【发布时间】:2018-07-03 02:52:45
【问题描述】:
很抱歉提出重复的老问题。我的代码没有运行用户数据 shell 脚本。我的 userdata 属性是一个参数,将在创建堆栈时给出。 我的代码是
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "AWS CloudFormation Sample Template",
"Parameters": {
"UserData": {
"Description": "User data",
"Type": "String"
}
},
"Resources": {
"EC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"KeyName": {
"Ref": "KeyName"
},
"InstanceType": {
"Ref": "InstanceType"
},
"ImageId": {
"Ref": "ImageId"
},
"SecurityGroups": [
{
"Ref": "EC2SecurityGroup"
}
],
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#!/bin/bash",
"\n",
{
"Ref": "UserData"
}
]
]
}
}
}
}
}
}
我在 userdata 参数中给出了以下 shell 命令
"apt-get update","\n","apt-get install -y apache2","\n","apt-get install -y php","\n"
我不知道我的用户数据脚本是否正确, 创建堆栈时没有显示任何错误,它成功创建了一个实例。 创建实例后,我检查了实例中未安装的 apache2 和 php。 谁能发现我的代码有什么问题?
【问题讨论】:
-
看起来 userdata 参数不是有效的脚本,这不会被拆分为数组,而是被视为字符串,尝试将
apt-get update\n update-get install -y apache2.....作为 UserData CloudFormation 参数传递 -
这个用户数据参数
apt-get update\n apt-get install -y apache2\n apt-get install -y php不起作用@toske我的JSON代码有什么变化 -
系统日志显示什么?还要从 aws 控制台检查实例上的用户数据。格式是否正确?
-
还要注意 CFN 中的“/n”字符。这似乎是无效的。
-
我将
apt-get update\n apt-get install -y apache2\n apt-get install -y php作为用户数据参数。 aws 控制台中的用户数据看起来像#/bin/bash -xe apt-get update\n apt-get install -y apache2\n apt-get install -y php并且还将我的 json 代码 "/n" 更新为 "\n" 那么我的问题是什么? @RodrigoM
标签: amazon-web-services amazon-ec2 ubuntu-16.04 amazon-cloudformation user-data