Я искал это в течение многих дней теперь, и я вполне подавлен. Мы хотим использовать Диспетчера в качестве контроля и настройки инструмента. Мы хотели бы деактивировать 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 вместо обращения к «сырой» переменной в определенном типе. Для этого может потребоваться немного переписать этот тип, но все должно работать нормально, независимо от того, используете ли вы Foreman в качестве ENC.