使用 cloudformation 模板创建时 ubuntu 服务器中的用户数据脚本不是 运行
Userdata script not running in ubuntu server while creating with cloudformation template
抱歉问了重复的老问题。我的代码没有 运行 用户数据 shell 脚本。我的用户数据 属性 是在创建堆栈时将给出的参数。
我的代码是
{
"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"
}
]
]
}
}
}
}
}
}
我在用户数据参数
中给出了以下shell命令
"apt-get update","\n","apt-get install -y apache2","\n","apt-get install -y php","\n"
我不知道我的用户数据脚本是否正确,
它在创建堆栈时没有显示任何错误,而是成功创建了一个实例。
创建实例后,我检查了实例中未安装的 apache2 和 php。
谁能发现我的代码有什么问题?
试试这个 UserData 块。 UserData 重命名为 UData 以排除命名冲突。在这种情况下,UData 应该是 "apt-get update; apt-get install -y apache2 php;"
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "AWS CloudFormation Sample Template",
"Parameters": {
"UData": {
"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",
"echo \">>>>>>>>>>>>> UPDATE <<<<<<<<<<<<<\"\n",
"export USR_DATA='", { "Ref": "UData" }, "'\n",
"echo $USR_DATA\n",
"echo $USR_DATA > user_data.sh\n",
"chmod +x user_data.sh\n",
"source user_data.sh\n",
"echo \">>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<\"\n"
]
]
}
}
}
}
}
用户数据也被记录在/var/log/cloud-init-output.log
该日志的输出确实有助于调试。
它接受以下用户数据,并安装以下脚本中给出的所有软件。
apt-get update;apt-get install -y apache2;apt-get install -y php;
抱歉问了重复的老问题。我的代码没有 运行 用户数据 shell 脚本。我的用户数据 属性 是在创建堆栈时将给出的参数。 我的代码是
{
"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"
}
]
]
}
}
}
}
}
}
我在用户数据参数
中给出了以下shell命令"apt-get update","\n","apt-get install -y apache2","\n","apt-get install -y php","\n"
我不知道我的用户数据脚本是否正确, 它在创建堆栈时没有显示任何错误,而是成功创建了一个实例。 创建实例后,我检查了实例中未安装的 apache2 和 php。 谁能发现我的代码有什么问题?
试试这个 UserData 块。 UserData 重命名为 UData 以排除命名冲突。在这种情况下,UData 应该是 "apt-get update; apt-get install -y apache2 php;"
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "AWS CloudFormation Sample Template",
"Parameters": {
"UData": {
"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",
"echo \">>>>>>>>>>>>> UPDATE <<<<<<<<<<<<<\"\n",
"export USR_DATA='", { "Ref": "UData" }, "'\n",
"echo $USR_DATA\n",
"echo $USR_DATA > user_data.sh\n",
"chmod +x user_data.sh\n",
"source user_data.sh\n",
"echo \">>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<\"\n"
]
]
}
}
}
}
}
用户数据也被记录在/var/log/cloud-init-output.log 该日志的输出确实有助于调试。
它接受以下用户数据,并安装以下脚本中给出的所有软件。
apt-get update;apt-get install -y apache2;apt-get install -y php;