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

Отключить часть Puppet ENC в Foreman

Я искал это несколько дней и очень расстроен. Мы хотим использовать Foreman в качестве инструмента для мониторинга и обеспечения. Мы хотели бы деактивировать ENC Формана и использовать только Hiera. Как я мог это сделать?

Относительно того, почему:

  1. мой босс так хочет.
  2. Форман не может решить параметр, исходящий от Хиеры.

Пример:

define repo_file_manager (
  $repository_url = "http://${yum_client::lib::repository_server}/repos/${name}/",
  $ensure         = 'present',
  $gpgcheck       = '0',
  $enable         = '1') {

  $repoconfdir = '/etc/yum.repos.d'

  file { "${repoconfdir}/${name}.repo":
    ensure  => $ensure,
    group   => 'root',
    mode    => '0644',
    owner   => 'root',
    require => File['/etc/yum.repos.d'],
    content => template("yum_client/repofile.erb"),
  }
}

${yum_client::lib::repository_server} возвращает ноль, но когда я это сделаю hiera(yum_client::lib::repository_server), Я получаю правильный результат.

Foreman - это только ENC, что означает, что он отправит отформатированный в YAML набор классов и переменных мастеру Puppet, когда его попросят сделать это.

Если переменная находится в Hiera, а вы делаете не переопределите его с помощью Foreman, переменная в Hiera должна использоваться автоматически, поскольку она не будет присутствовать в выводе YAML. В более новой версии Foreman вы можете делать и то, и другое: использовать набор по умолчанию с Hiera, но при этом иметь возможность переопределить это значение с помощью Foreman.

Что касается вашего вопроса: iiuc, то, что вы создаете, является определенным типом, который не имеет тех же свойств привязки данных для Hiera, что и класс. Что вы, вероятно, захотите сделать, так это вызвать функцию hiera вместо того, чтобы обращаться к «сырой» переменной в определенном типе. Для этого может потребоваться немного переписать этот тип, но он должен работать нормально, независимо от того, используете ли вы Foreman в качестве ENC.