Здесь есть несколько проблем.
В вашем hiera.yaml
отсутствует строка, а именно ключ defaults
. Так должно быть:
---
version: 5
defaults: ## add this line
datadir: "/etc/puppetlabs/code/environments"
data_hash: yaml_data
hierarchy:
- name: "Per-node data (yaml version)"
path: "%{::environment}/nodes/%{::trusted.certname}.yaml"
- name: "Common YAML hierarchy levels"
paths:
- "defaults/common.yaml"
- "defaults/users.yaml"
Я обнаружил, что с помощью гема puppet-syntax (включается, если вы используете PDK, что рекомендуется) :
▶ bundle exec rake validate
Syntax OK
---> syntax:manifests
---> syntax:templates
---> syntax:hiera:yaml
ERROR: Failed to parse hiera.yaml: (hiera.yaml): mapping values are not allowed in this context at line 3 column 10
Кроме того, в дополнение к тому, что упомянул Джон, самым простым классом для чтения ваших данных будет следующий:
class test (Hash[String,Hash] $users) {
create_resources(accounts::user, $users)
}
Или, если вы хотите избежать использования create_resources
*:
class test (Hash[String,Hash] $users) {
$users.each |$user,$props| {
accounts::user { $user: * => $props }
}
}
Обратите внимание, что для этого я использовал функцию автоматического поиска параметров. См. ссылку ниже.
Затем в ваших данных Hiera у вас будет соответствующий ключ с именем test::users
(имя класса "test", имя ключа "users"):
---
test::users: ## Note that this line changed.
joed:
locked: false
comment: System Operator
uid: '1700'
gid: '1700'
groups:
- admin
- sudonopw
sshkeys:
- ssh-rsa ...Hw== [email protected]
Использование автоматического поиска параметров, как правило, является более идиоматичным способом написания кода Puppet по сравнению с вызовом lookup
явно.
Для получения дополнительной информации:
(*Обратите внимание, что create_resources
является «спорным». Многие в сообществе Puppet предпочитают не использовать его.)
person
Alex Harvey
schedule
26.02.2019
accounts::user
и даже он работает как пишут в мануале, но я не знаю как он работает как YAML/Hiera - person Rostyslav Malenko   schedule 25.02.2019