Я пытаюсь создать довольно простую инфраструктуру для сред DEV. Указанные ограничения:
Это предполагаемая архитектура:
У меня есть хороший шаблон облачной информации, который не работает. Сообщение об ошибке:
Received 1 FAILURE signal(s) out of 1. Unable to satisfy 100% MinSuccessfulInstancesPercent requirement
Похоже, это вызвано циклом зависимости:
... или словами:
Проверка работоспособности целевой группы не выполняется
... потому что контейнер докеров nginx не существует
... потому что CodeDeploy не развернул контейнер докеров
... поскольку облачная формация считает, что ASG еще не готова
... потому что проверка здоровья целевой группы не удалась
Вопрос: Можно ли разорвать цикл, отключив проверки работоспособности целевой группы? (В aws такой опции не нашел). Какие еще варианты могут помочь?
В вашем шаблоне ASG вы можете установить HealthCheck
собственность EC2
. Таким образом, он не будет зависеть от проверок работоспособности ELB и пометит экземпляр как работоспособный, как только он завершит UserData
сценарий.
TestAutoScalingGroup:
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
[...]
HealthCheckType: EC2
Тогда в вашем LaunchConfiguration.UserData
вам нужно отправить сигнал после завершения скрипта UserData:
TestLaunchConfig:
Type: AWS::AutoScaling::LaunchConfiguration
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash -x
[... some setup ...]
# Signal the status from this instance
/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} \
--resource TestAutoScalingGroup --region ${AWS::Region}
Обратите внимание, что --resource
параметр должен соответствовать TestAutoScalingGroup
имя ресурса.
Надеюсь, это поможет :)