Puppet Hiera v5: функция lookup () не нашла значение - PullRequest
0 голосов
/ 28 мая 2019

Я пришел из Puppet 3 и пытаюсь пересобрать свой код на новой системе Puppet 6. Я пытаюсь дать своим агентным узлам своего рода "stage_level", например, продуктивный или тестируемый. Hiera не может найти этот уровень_уровня, хотя он задан в файле Hiera.

stage_level установлен в моем Nodedefinition, и Hiera сможет его найти. Сам поиск находится в init.pp из модуля "Facter", который развертывает три файла на узлах агента.

hiera.yaml

version: 5
defaults:
datadir: /etc/puppetlabs/code/environments/production/data/
data_hash: yaml_data
hierarchy:
- name: 'Global Config'
  path: global.yaml
- name: 'Nodes'
  path: 'nodes/%{trusted.certname}.yaml'

Определение узла в data / node / server.xyz.com.yaml

role: xyz
stage_level: production

init.pp из модулей / facter / manifest /

define facter::set_av_facter {

$facter_value = hiera($name,'no_default_value')

file { "/etc/facter/facts.d/${name}.yaml":
  ensure  => present,
  owner   => 'root',
  group   => 'root',
  mode    => '0644',
  content => inline_template("# This file is managed by puppet\n${name}: ${facter_value}\n"),
     }
}

class facter {

file { '/etc/facter':
  ensure  => directory,
  owner   => 'root',
  group   => 'root',
  mode    => '0755',
 }

file { '/etc/facter/facts.d':
  ensure  => directory,
  owner   => 'root',
  group   => 'root',
  mode    => '0755',
}

$av_facter =  [
  'role',
  'stage_level',
]

facter::set_av_facter{$av_facter:}

file { "/etc/facter/facts.d/patchlevel.yaml":
  ensure => absent,
     }
}

Hiera не может найти уровень stage_level, который я установил в определении узла. Я думаю, что проблема в определении, которое мне пришлось переписать, потому что на самом деле это был код из Puppet 3. Ожидаемый результат - файл в моем Agentnode в /etc/facts/facter.d/stage_level.yaml с «production» в качестве содержимого.

Любая помощь приветствуется

...