Существует атрибут depends_on
, который позволяет устанавливать явные зависимости и создавать вещи по порядку. Он ограничен для вашего сценария, потому что он не ждет, пока новые экземпляры будут «готовы», только что созданы.
Одна идея, которая у меня возникла при чтении вашего сценария, вы можете использовать источник данных extermal
. Не уверен, что это было предназначено для такого рода вещей, но я думаю, что это может сработать. По сути, вы можете написать сценарий, который будет использовать интерфейс командной строки AWS и все остальное, что нужно, чтобы увидеть, создан ли экземпляр и готов ли он. Если вы используете с depends_on
или объедините выходные данные источника данных external
со следующим экземпляром (используйте выходные данные для установки тега?), Я думаю, это даст желаемый эффект.
Этот дизайн немного пахнет для меня, хотя. Существуют и другие сервисы и функции AWS, которые могут помочь вам в этом, например, развертывания ECS с проверками работоспособности балансировщика нагрузки.
Ресурсы:
https://www.terraform.io/docs/providers/external/data_source.html
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-create-loadbalancer-rolling.html
Редактировать:
Если вы застряли с экземплярами EC2, другой собственный способ решения AWS может заключаться в использовании ловушек жизненного цикла. Я использовал сценарии пользовательских данных EC2 в сочетании с перехватчиками жизненного цикла, вызывающими функции Lambda, для развертывания и настройки пользовательского кластера Kafka (до MSK). Это требовало, чтобы я приводил экземпляры в порядок и назначал каждому экземпляру уникальный идентификатор брокера. Похоже на ваш сценарий.
Ресурс: https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html