Невозможно получить переменную шаблона марионетки 6 из hiera

У меня возникла проблема при переносе кода марионетки с марионетки 3 на марионетку 6.

Это сообщение об ошибке:

Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, Failed to parse template puppetserver/var/test.sh.erb:
  Filepath: /opt/puppetlabs/environments/production/modules/puppetserver/templates/var/test.sh.erb
  Line: 21
  Detail: undefined method `join' for nil:NilClass
Did you mean?  JSON
 (file: /opt/puppetlabs/environments/production/modules/puppetserver/manifests/config.pp, line: 38, column: 16) on node test.domain

/opt/puppetlabs/environments/production/modules/puppetserver/templates/var/test.sh.erb:

...
for environment in <%= @pup_environments_array.join(' ') %>; do
this that
...

В моем hieradata JSON:

//test.domain
{
  "puppetserver::working::environments": {
    "production": {
      "ensure": "present",
    },
    "staging": {
      "ensure": "present"
    }
  }
}

В / opt / puppetlabs / environment / production / modules / puppetserver /manifests/config.pp:

class puppetserver::config {
  file {'/var/test.sh.erb':
    ensure  => file,
    owner   => 'puppet',
    group   => 'puppet',
    content => template('puppetserver/var/test.sh.erb'),
  }
}

В /opt/puppetlabs/environments/production/modules/puppetserver/manifests/init.pp:

class puppetserver (
) inherits puppetserver:params {
  $pup_environments= hiera_hash('puppetserver::working::environments',{})
  $pup_environments_array = keys($pup_environments)
  include puppetserver::config
}
  • puppetserver: 6.0.2
  • puppet-agent: 6.0.4

Этот код работает нормально на марионетке 3, но не на марионетке 6. Кто-нибудь, пожалуйста, дайте мне знать причину и как ее исправить?

Спасибо

0
задан 8 November 2018 в 10:13
1 ответ

Хорошо. Я сам получил ответ.

Код:

file {'/var/test.sh.erb':
  ensure  => file,
  owner   => 'puppet',
  group   => 'puppet',
  content => template('puppetserver/var/test.sh.erb'),
}

должен находиться на /opt/puppetlabs/environments/production/modules/puppetserver/manifests/init.pp, а не в / opt / puppetlabs / environment / production / modules / puppetserver /manifests/config.pp

На марионетке 3 я не разделял множество манифестов.

0
ответ дан 5 December 2019 в 05:05

Теги

Похожие вопросы