Как связать экземпляры в CloudFormation

Мы хотели бы создать шаблон для довольно стандартного стека в AWS. Нам нужно три слоя.

  1. Слой: эластичный балансировщик нагрузки

  2. Уровень: несколько веб-серверов, которые создаются / уничтожаются в соответствии с аварийными сигналами, вызванными запросом на сайте

  3. Уровень: сервер базы данных

Экземпляры на уровне 2 должны знать имя хоста экземпляра базы данных. В идеале я хотел бы заполучить частный IP-адрес экземпляра базы данных и передать его через пользовательские данные на веб-серверы.

Fn:: GetAtt не поддерживает приватный ip (только публичный)

Я полагаю, что альтернативой будет создание стека, а затем установка вручную частного ib db. Это делает нашу установку немного менее чистой. Мы бы хотели, чтобы все было описано в шаблоне. (даже если это включает в себя запуск сценария через пользовательские данные)

Какие-либо предложения?

1 ответ

Я делаю это сейчас, чтобы добавить новые узлы к своему хозяину марионеток. Например, я беру частный IP-адрес главного экземпляра puppet в разделе UserData моего нового узла:

"echo ", { "Fn::GetAtt" : [ "MasterOfPuppets", "PrivateIp" ] }, " ", 
         { "Fn::GetAtt" : [ "MasterOfPuppets", "PrivateDnsName" ] } ," puppet 
    >> /etc/hosts\n","\n",

См. Страницу 119 руководства пользователя CloudFormation.

В качестве альтернативы вы можете использовать экземпляр MetaData:

curl http://169.254.169.254/latest/meta-data/local-ipv4/
Другие вопросы по тегам