Имя окружающей среды для кукольного объекта из файла.pp?

У меня есть внешний классификатор узлов, который управляет средой для каждого устройства в моем парке марионеток.

Когда устройство регистрируется, я обновляю его файл конфигурации, чтобы он знал, в какой среде он находится:

ini_setting { 'set local enviornment':
  ensure  => present,
  path    => '/etc/puppetlabs/puppet/puppet.conf',
  section => 'agent',
  setting => 'environment',
  value   => 'environment_name',
}

У меня сейчас есть каждый r10k ветка жестко прописывает название.

Вместо этого я хотел бы иметь возможность использовать один и тот же блок кода во всех средах, что-то вроде:

ini_setting { 'set local enviornment':
  ...
  value   => $environment_name,
}

1 ответ

Решение

Когда устройство регистрируется, я обновляю его файл конфигурации, чтобы он знал, в какой среде он находится:

Вы знаете, что вам не нужно делать это ради Puppet, верно? Если вы (должным образом; см. Ниже) используете ENC для управления средами узлов, тогда это переопределяет все, что самоотчеты узлов, так что вы можете обойтись без локальной настройки узлов, чтобы они вообще знали свои собственные среды.

Вместо этого я хотел бы иметь возможность использовать один и тот же блок кода во всех средах, что-то вроде:

ini_setting { 'set local enviornment':
  ...
  value   => $environment_name,
}

Правильный способ для ENC указать среду узла для Puppet - установитьenvironment введите его выход для этого узла. Вот как ENC напрямую помещает узел в указанную среду. Однако, как и любой другой параметр верхнего уровня, передаваемый ENC, вы можете ссылаться на его значение как на переменную верхнего уровня. Таким образом, если вы хотите обновить конфигурацию Puppet узла, чтобы явно указать (после факта) среду, которую ENC назначает узлу, то вы можете использовать ее, как вы предлагаете:

ini_setting { 'set local enviornment':
  ...
  value   => $::environment,
}
Другие вопросы по тегам