使用 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;