Я искал это несколько дней и очень расстроен. Мы хотим использовать Foreman в качестве инструмента для мониторинга и обеспечения. Мы хотели бы деактивировать ENC Формана и использовать только Hiera. Как я мог это сделать?
Относительно того, почему:
Пример:
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.