Я пытаюсь создать макетную управляемую инфраструктуру (не предпринимательство) в AWS с экземплярами EC2. Используя модуль puppetlabs-aws, я могу создавать машины с помощью удобных средств. Далее следует сделать локальные настройки для каждого node, что самое важное - установить уникальное имя хоста. Как я могу это сделать?
Один из способов, которым я знаю, - предоставить script с помощью параметра user_data
. Это было бы здорово, но чтобы быть полезным, мне нужно иметь возможность параметризовать этот script, чтобы избежать дублирования script один раз для каждого агента.
Имеет ли смысл? Я бы очень признателен за удобный способ достижения этой цели, поскольку я хочу запускать новые экземпляры программно. Любое предложение будет рассмотрено.
Update
Чтобы привести пример моей проблемы, рассмотрите этот фрагмент моего мануфактурного манифеста:
ec2_instance { 'backend':
ensure => present,
name => 'backend',
region => 'us-west-2',
image_id => 'ami-f0091d91',
instance_type => 't2.micro',
key_name => 'mykey',
security_groups => ['provision-sg'],
user_data => template('configure.erb'),
}
ec2_instance { 'webfront':
ensure => present,
name => 'webfront',
region => 'us-west-2',
image_id => 'ami-f0091d91',
instance_type => 't2.micro',
key_name => 'mykey',
security_groups => ['provision-sg'],
user_data => template('configure.erb'),
}
Это обеспечит запуск и запуск двух экземпляров. Обратите внимание, что user_data => template('configure.erb')
ссылается на шаблон script, который выполняется в экземпляре после его создания. Здесь я мог бы задать имя хоста (или что бы я хотел), если бы я знал только, на какие данные основывать решение. Я могу добавить теги к описаниям экземпляров, но это невозможно прочитать из configure.erb
script, насколько я знаю.
В любом случае, установка имени хоста - это только моя идея решить проблему с корнем. Могут быть другие более удобные методы. То, что я хочу, это просто способ иметь эти два экземпляра, представляющие разные типы node для марионеточного мастера.