bat*_*man 14 ubuntu tomcat amazon-web-services amazon-cloudformation
我对 AWS 服务很陌生。我正在尝试使用 AWS 云格式并创建了一个模板。该模板没有错误,我可以使用它创建机器。
但是我在模板中添加了一些配置,以便在启动期间安装 tomcat、git 和其他东西。但这不会发生在我身上。
这是我用于安装 tomcat 的部分代码:
"Resources": {
"Tomcat": {
"Type": "AWS::EC2::Instance",
"Metadata": {
"AWS::CloudFormation::Init": {
"config": {
"packages": {
"apt": {
"tomcat6": [],
"git": [],
}
}
}
}
},
Run Code Online (Sandbox Code Playgroud)
但是当我登录机器时既tomcat
没有git
也没有安装!
提前致谢。
dia*_*0ne 23
我相信您的问题是关于 cloud-init 与 cfn-init 不同的混淆。
cloud-init是作为 Ubuntu AWS AMI 的一部分启动的工具,它允许解释实例元数据的 EC2 用户数据组件。Amazon Linux 也采用了这个工具并将其内置到他们的 AMI 中。
cfn-init是AWS 为Amazon Linux创建的名为CloudFormation 帮助程序脚本的不同工具集的一部分,它可以读取您的 CloudFormation 模板中命名的附加部分。Metadata
因此,Ubuntu 和 Amazon Linux AMI 都预装了 cloud-init 工具来访问用户数据,但只有 Amazon Linux预装了 CloudFormation帮助脚本,例如 cfn-init 来访问 CloudFormation 元数据。
但是,AWS 会分发可用于读取 CloudFormation 元数据的包。具体来说,请查看此模板,了解如何使用 cloud-init 用户数据脚本安装 python-setuptools,下载 CloudFormation 帮助程序脚本,使用 easy_install 安装它们,然后调用 cfn-init。
注意:还有其他发行版或 AMI 可能支持 cloud-init 或 cfn-init,但我在这里只介绍一般情况。
And*_*anu 12
您需要在实例的 UserData 属性中调用 cfn-init ( http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html ):
{
"Resources": {
"Tomcat": {
"Type": "AWS::EC2::Instance",
"Metadata": {
"AWS::CloudFormation::Init": {
"config": {
"packages": {
"apt": {
"tomcat6": [],
"git": []
}
}
}
}
},
"Properties": {
"UserData": {
"Fn::Base64": {
"Fn::Join": ["", [
"#!/bin/bash\n",
"/opt/aws/bin/cfn-init -s ", {
"Ref": "AWS::StackName"
},
" -r Tomcat",
" --region ", {
"Ref": "AWS::Region"
}, "\n"
]]
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
UserData 属性采用 Base64 编码,允许您指定应在实例启动时运行的脚本。在这里,您可以调用 cfn-init,它将读取 CloudFormation::Init 元数据并设置其中指定的所有内容。
此外,在创建 CF 堆栈时,您可能希望进入第二页上的高级设置(在提供参数之后)并确保错误回滚设置为“否”。这样,如果 cfn-init 脚本因任何原因失败,您可以通过 ssh 连接到实例并检查 /var/log/cfn-init.log 文件以获取更多信息。
归档时间: |
|
查看次数: |
18191 次 |
最近记录: |