Назад | Перейти на главную страницу

Как подключить экземпляры в CloudFormation

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

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

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

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

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

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

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

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

Я делаю это сейчас, чтобы добавить новые узлы к своему хозяину марионеток. Например, я получаю частный IP-адрес главного экземпляра марионетки в разделе 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/