Как связать экземпляры в CloudFormation
Мы хотели бы создать шаблон для довольно стандартного стека в AWS. Нам нужно три слоя.
Слой: эластичный балансировщик нагрузки
Уровень: несколько веб-серверов, которые создаются / уничтожаются в соответствии с аварийными сигналами, вызванными запросом на сайте
Уровень: сервер базы данных
Экземпляры на уровне 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/