Конфигурация Lookup в hiera.yaml имеет неправильный тип, запись 'иерархия', индекс 0 ожидает значение Struct, получено String
Эта настройка работала и раньше, но после переустановки Ubuntu 16.04 на моем сервере и переустановки puppetserver и puppet agent я получаю сообщение об ошибке при попытке выполнить мой первый запуск агента.
Ошибка: Не удалось получить каталог с удаленного сервера: Ошибка 500 на СЕРВЕРЕ: Ошибка сервера: Ошибка оценки: Ошибка при оценке вызова функции, Ошибка поиска ключа 'lookup_options': Конфигурация поиска в /etc/puppetlabs/puppet/hiera.yaml'имеет неправильный тип, запись' иерархия ', индекс 0 ожидает значение Struct, получил String
Конфигурация Lookup в '/etc/puppetlabs/puppet/hiera.yaml' имеет неправильный тип, запись 'иерархия', индекс 1 ожидает значение Struct, получено String
Конфигурация поиска по адресу /etc/puppetlabs/puppet/hiera.yaml имеет неправильный тип, нераспознанный ключ 'backends'
Конфигурация поиска по адресу /etc/puppetlabs/puppet/hiera.yaml имеет неправильный тип, нераспознанный ключ yaml (файл: /etc/puppetlabs/code/environments/production/site.pp, строка: 1, столбец: 1) на узле cclloyd.com
/etc/puppetlabs/puppet/hiera.yaml:
---
# Hiera 5 Global configuration file
version: 5
:backends:
- yaml
:hierarchy:
- "nodes/%{::trusted.certname}"
- common
:yaml:
:datadir:
1 ответ
Кроме
version: 5
, ваш файл выглядит в формате Hiera 3. Hiera 3 может правдоподобно игнорировать ключ 'version' и нормально обрабатывать все остальное, но, очевидно, вы сейчас используете Hiera 5. Поскольку файл объявляет, что он в формате Hiera 5, естественно, что Hiera берет его на слово. Аналог этой конфигурации Hiera 5 будет выглядеть примерно так:
---
# Hiera 5 Global configuration file
version: 5
hierarchy:
- name: "Per-node data (yaml version)"
path: "nodes/%{::trusted.certname}"
- name: "Common and fallback data"
path: "common.yaml"
defaults:
data_hash: yaml_data
Обратите внимание, что значение ключа "иерархия" является массивом хэшей, и что (в Hiera 5) оно должно быть "иерархия", а не ": иерархия".
В качестве альтернативы, Hiera 5 может принять ваш исходный файл, если вы просто измените его, указав правильную версию файла конфигурации (3) для исходного содержимого. Поскольку формат Hiera 3 устарел в Puppet 5 и планируется удалить в Puppet 6, тем не менее, похоже, что сейчас самое время перейти на новый синтаксис.