1

I am currently trying to rebuild the example described here

The Problem is, that when I try to get the ntp::servers variable I get the following error, which I have problems with understanding.

hiera ntp::servers ::fqdn=debian

/usr/lib/ruby/vendor_ruby/hiera/backend.rb:18:in `[]': can't convert Symbol into Integer (TypeError)
from /usr/lib/ruby/vendor_ruby/hiera/backend.rb:18:in `datadir'
from /usr/lib/ruby/vendor_ruby/hiera/backend.rb:98:in `datasourcefiles'
from /usr/lib/ruby/vendor_ruby/hiera/backend/yaml_backend.rb:16:in `lookup'
from /usr/lib/ruby/vendor_ruby/hiera/backend.rb:206:in `block in lookup'
from /usr/lib/ruby/vendor_ruby/hiera/backend.rb:203:in `each'
from /usr/lib/ruby/vendor_ruby/hiera/backend.rb:203:in `lookup'
from /usr/lib/ruby/vendor_ruby/hiera.rb:60:in `lookup'
from /usr/bin/hiera:225:in `<main>'

I considering the torubleshooting bulletpoints

  • Your hiera.yaml file matches the example we provided
  • You’ve put a symlink to hiera.yaml where the command line tool expects to find it (/etc/hiera.yaml)
  • You’ve saved your kermit.example.com data source file with a .yaml extension
  • Your data source file’s YAML is well formed
  • You restarted your puppet master if you modified hiera.yaml

My /etc/puppet/hiera.yaml. (a bit different, but it should also work)

:backends:
  - yaml
  - puppet
:yaml:
  - :datadir: /etc/puppet/hieradata
:puppet:
  - :datadir: data
:hierarchy:
  - "node/%{::clientcert}"
  - "%{::environment}"
  - common

Symlink is correct

ls -l /etc/hiera.yaml 
lrwxrwxrwx 1 root root 22 Sep 15 15:33 /etc/hiera.yaml -> /etc/puppet/hiera.yaml

My example file: /etc/puppet/hieradata/node/debian.yaml

ntp::restrict:
  -
ntp::autoupdate: false
ntp::enable: true
ntp::servers:
  - 0.us.pool.ntp.org iburst
  - 1.us.pool.ntp.org iburst
  - 2.us.pool.ntp.org iburst
  - 3.us.pool.ntp.org iburst

I do not exactly which tools to use to check if the YAML was welformed. I copied it from the website, so I asume it is ok.

The Puppetmaster was also restarted to be sure.

So what could be the problem with the error the hiera tool gives me?

syss
  • 123
  • 7

1 Answers1

1

You have chosen the more secure path of using %{::clientcert} instead of %{::fqdn}, which is commendable. But make sure to supply a value for that rather than ::fqdn=debian when performing the lookup.

Furthermore, rather than :datadir, the puppet backend has a :datasource option (see the docs).

I recommend removing the puppet backend for the time being. Add it if you find you really need it. Most users won't.

Felix Frank
  • 3,093
  • 1
  • 16
  • 22