我正在尝试学习使用senario的Cloudformation,我需要在配置一个EC2后启动第二个EC2实例,并且很好。
这就是我在Instance one的UserData中所拥有的
"#!/bin/bash\n",
"#############################################################################################\n",
"sudo add-apt-repository ppa:fkrull/deadsnakes\n",
"sudo apt-get update\n",
"curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -\n",
"sudo apt-get install build-essential libssl-dev python2.7 python-setuptools -y\n",
"#############################################################################################\n",
"Install Easy Install",
"#############################################################################################\n",
"easy_install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n",
"#############################################################################################\n",
"#############################################################################################\n",
"GIT LFS Repo",
"#############################################################################################\n",
"curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash\n",
"#############################################################################################\n",
"cfn-init",
" --stack ",
{
"Ref": "AWS::StackName"
},
" --resource UI",
" --configsets InstallAndRun ",
" --region ",
{
"Ref": "AWS::Region"
},
"\n",
"#############################################################################################\n",
"# Signal the status from cfn-init\n",
"cfn-signal -e 0 ",
" --stack ",
{
"Ref": "AWS::StackName"
},
" --resource UI",
" --region ",
{
"Ref": "AWS::Region"
},
" ",
{
"Ref": "WaitHandleUIConfig"
},
"\n"
我有一个WaitCondition,我认为这是用来做这个的
"WaitHandleUIConfig" : {
"Type" : "AWS::CloudFormation::WaitConditionHandle",
"Properties" : {}
},
"WaitConditionUIConfig" : {
"Type" : "AWS::CloudFormation::WaitCondition",
"DependsOn" : "UI",
"Properties" : {
"Handle" : { "Ref" : "WaitHandleUIConfig" },
"Timeout" : "500"
}
}
在Instance中,我在第二个实例中使用DependsOn等待第一个实例。
"Service": {
"Type": "AWS::EC2::Instance",
"Properties": {
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "1ba546d0-2bad-4b68-af47-6e35159290ca"
},
},
"DependsOn":"WaitConditionUIConfig"
}
这不起作用。我一直收到错误
WaitCondition超时。期待1
时收到0条件任何帮助都将不胜感激。
由于
答案 0 :(得分:0)
在句柄周围加上引号
更改此
" ",
{
"Ref": "WaitHandleUIConfig"
},
"\n"
到这个
" \"",
{
"Ref": "WaitHandleUIConfig"
},
"\"\n"
答案 1 :(得分:0)
从cfn-signal
命令中删除--stack
,--resource
和--region
。这些仅在“资源信令”时使用,而不是在使用等待条件句柄发信号时使用。 (您可能还需要添加--id
选项,但文档说这不是必需的。)
要进一步调试,请检查EC2实例上的/var/log/cloud-init-output.log
文件,以查看可能无法成功将信号发送到等待条件的任何进一步的cloud-init错误。
您可能还想对说明"Install Easy Install",
和"GIT LFS Repo",
进行评论和换行,例如"# Install Easy Install\n",
,这些语法问题不应该导致您的脚本失败,但会输出& #39;命令未找到'错误会显示在您的日志中。