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