我在CloudFormation模板上使用了自定义Ubuntu AMI,但出现错误消息CREATE_FAILED AWS::AutoScaling::AutoScalingGroup WebServerGroup Received 0 SUCCESS signal(s) out of 1. Unable to satisfy 100% MinSuccessfulInstancesPercent requirement
。我检查了在/var/log/cfn-init.log
上创建的EC2实例上的日志文件,并且在日志文件上看到了Could not enable service cfn-hup
。以下是我的模板的一部分:
"WebServerGroup": {
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"AvailabilityZones": {
"Ref": "AZs"
},
"VPCZoneIdentifier": {
"Ref": "Subnets"
},
"LaunchConfigurationName": {
"Ref": "LaunchConfig"
},
"MinSize": "1",
"MaxSize": "10",
"DesiredCapacity": {
"Ref": "InstanceCount"
},
"TargetGroupARNs" : [{"Ref": "TargetGroup"}],
"Tags": [{
"Key": "opsworks_stack_id",
"Value": {
"Ref": "OpsWorksStackId"
},
"PropagateAtLaunch": "true"
}]
},
"CreationPolicy": {
"ResourceSignal": {
"Timeout": "PT15M"
}
},
"UpdatePolicy": {
"AutoScalingRollingUpdate": {
"MinInstancesInService": "1",
"MaxBatchSize": "1",
"WaitOnResourceSignals": "true",
"PauseTime": "PT15M"
}
}
},
"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Metadata" : {
"Comment" : "Install a simple application",
"AWS::CloudFormation::Init" : {
"config" : {
"files" : {
"/etc/cfn/cfn-hup.conf" : {
"content" : { "Fn::Join" : ["", [
"[main]\n",
"stack=", { "Ref" : "AWS::StackId" }, "\n",
"region=", { "Ref" : "AWS::Region" }, "\n"
]]},
"mode" : "000400",
"owner" : "root",
"group" : "root"
},
"/etc/cfn/hooks.d/cfn-auto-reloader.conf" : {
"content": { "Fn::Join" : ["", [
"[cfn-auto-reloader-hook]\n",
"triggers=post.update\n",
"path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n",
"action=/usr/local/bin/cfn-init -v ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource LaunchConfig ",
" --region ", { "Ref" : "AWS::Region" }, "\n",
"runas=root\n"
]]}
}
},
"services" : {
"sysvinit" : {
"cfn-hup" : { "enabled" : "true", "ensureRunning" : "true",
"files" : ["/etc/cfn/cfn-hup.conf", "/etc/cfn/hooks.d/cfn-auto-reloader.conf"]}
}
}
}
}
},
"Properties" : {
"AssociatePublicIpAddress" : "true",
"ImageId" : { "Ref" : "AmiId" },
"SecurityGroups" : [ { "Ref" : "LoadBalancerSecurityGroup" } ],
"KeyName" : { "Ref" : "KeyName" },
"InstanceType" : { "Ref" : "InstanceType" },
"IamInstanceProfile": {"Ref" :"RoleName"},
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -xe\n",
"easy_install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n",
"/usr/local/bin/cfn-init -v ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource LaunchConfig ",
" --region ", { "Ref" : "AWS::Region" }, "\n",
"/usr/local/bin/cfn-signal -e $? ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource WebServerGroup ",
" --region ", { "Ref" : "AWS::Region" }, "\n",
"sed -i'' -e 's/.*requiretty.*//' /etc/sudoers", "\n",
"pip install --upgrade awscli", "\n",
"INSTANCE_ID=$(aws opsworks register ",
" --use-instance-profile ",
" --infrastructure-class ec2 ",
" --region ", { "Ref" : "AWS::Region" },
" --stack-id ", { "Ref" : "OpsWorksStackId" },
" --override-hostname $(tr -cd 'a-z' < /dev/urandom |head -c8) --local 2>&1 |grep -o 'Instance ID: .*' |cut -d' ' -f3)", "\n",
"aws opsworks wait instance-registered ",
" --region ", { "Ref" : "AWS::Region" },
" --instance-id $INSTANCE_ID", "\n",
"aws opsworks assign-instance ",
" --region ", { "Ref" : "AWS::Region" },
" --instance-id $INSTANCE_ID ",
" --layer-ids ", { "Ref": "OpsWorksLayerId" }, "\n"
]]}}
}
}
最佳答案
我弄清楚了我的代码出了什么问题。其cfn-hup
服务。安装后不会启动。查看用户数据的更改。下面是更新的代码。
"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Metadata" : {
"Comment" : "Install a simple application",
"AWS::CloudFormation::Init" : {
"config" : {
"files" : {
"/etc/cfn/cfn-hup.conf" : {
"content" : { "Fn::Join" : ["", [
"[main]\n",
"stack=", { "Ref" : "AWS::StackId" }, "\n",
"region=", { "Ref" : "AWS::Region" }, "\n"
]]},
"mode" : "000400",
"owner" : "root",
"group" : "root"
},
"/etc/cfn/hooks.d/cfn-auto-reloader.conf" : {
"content": { "Fn::Join" : ["", [
"[cfn-auto-reloader-hook]\n",
"triggers=post.update\n",
"path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n",
"action=/usr/local/bin/cfn-init -v ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource LaunchConfig ",
" --region ", { "Ref" : "AWS::Region" }, "\n",
"runas=root\n"
]]}
}
},
"services" : {
"sysvinit" : {
"cfn-hup" : { "enabled" : "true", "ensureRunning" : "true",
"files" : ["/etc/cfn/cfn-hup.conf", "/etc/cfn/hooks.d/cfn-auto-reloader.conf"]}
}
}
}
}
},
"Properties" : {
"AssociatePublicIpAddress" : "true",
"ImageId" : { "Ref" : "AmiId" },
"SecurityGroups" : [ { "Ref" : "LoadBalancerSecurityGroup" } ],
"KeyName" : { "Ref" : "KeyName" },
"InstanceType" : { "Ref" : "InstanceType" },
"IamInstanceProfile": {"Ref" :"RoleName"},
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash \n",
"easy_install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n",
"sudo ln /usr/local/bin/cfn-hup /etc/init.d/ \n",
"sudo initctl reload-configuration \n",
"sudo chmod 700 /etc/init.d/cfn-hup \n",
"sudo chown root:root /etc/init.d/cfn-hup \n",
"sudo update-rc.d cfn-hup defaults \n",
"sudo update-rc.d cfn-hup enable \n",
"/usr/local/bin/cfn-init -v ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource LaunchConfig ",
" --region ", { "Ref" : "AWS::Region" }, "\n",
"/usr/local/bin/cfn-signal -e $? ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource WebServerGroup ",
" --region ", { "Ref" : "AWS::Region" }, "\n",
"sed -i'' -e 's/.*requiretty.*//' /etc/sudoers", "\n",
"pip install --upgrade awscli", "\n",
"INSTANCE_ID=$(aws opsworks register ",
" --use-instance-profile ",
" --infrastructure-class ec2 ",
" --region ", { "Ref" : "AWS::Region" },
" --stack-id ", { "Ref" : "OpsWorksStackId" },
" --override-hostname $(tr -cd 'a-z' < /dev/urandom |head -c8) --local 2>&1 |grep -o 'Instance ID: .*' |cut -d' ' -f3)", "\n",
"aws opsworks wait instance-registered ",
" --region ", { "Ref" : "AWS::Region" },
" --instance-id $INSTANCE_ID", "\n",
"aws opsworks assign-instance ",
" --region ", { "Ref" : "AWS::Region" },
" --instance-id $INSTANCE_ID ",
" --layer-ids ", { "Ref": "OpsWorksLayerId" }, "\n"
]]}}
}
}