У меня есть стек, сгенерированный AWS CloudFormation, который включает экземпляр EC2 (под управлением Ubuntu 14.04) и экземпляр RDS (база данных). Оба они находятся внутри VPC, который включает в себя мастера марионеток (не как часть стека формирования облака):
----------------- VPC --------------------
+-----+ +-----+ +---------------+
| EC2 | <---> | RDS | | Puppet master |
+-----+ +-----+ +---------------+
Я хочу куколизировать узел EC2, написав конфигурацию для веб-сервера и приложения, включая информацию о соединении с БД, часть которой является внутренним именем хоста экземпляра RDS.
Вопрос в том, как я могу заставить puppetmaster скомпилировать шаблон для конфигурации приложения, если ему нужно знать внутреннее имя хоста узла RDS.
Я новичок в большинстве этих технологий, особенно в CloudFormation и Puppet. До сих пор я думал о нескольких решениях, но хотел получить некоторые рекомендации и задавался вопросом, не упустил ли я что-то.
Если вы можете создать сценарий (на главном сервере Puppet), который будет печатать имя (вероятно, через вызовы интерфейса командной строки AWS), вы можете использовать сгенерировать функцию использовать это имя в манифестах и шаблонах Puppet.
Вы можете добавить этот звонок прямо в свой site.pp
файл.
$rds_internal_name = generate('/usr/local/sbin/get-rds-internal-name')