web-dev-qa-db-ja.com

人形のHiera NTPの例を使用しても機能しません

私は現在、説明されている例を再構築しようとしています ここ

問題は、ntp :: servers変数を取得しようとすると、次のエラーが発生することです。これは理解に問題があります。

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>'

トラブルシューティングの箇条書きを検討しています

  • Hiera.yamlファイルは私たちが提供した例と一致します
  • コマンドラインツールが見つけることを期待するhiera.yamlへのシンボリックリンクを配置しました(/etc/hiera.yaml)
  • Kermit.example.comデータソースファイルを.yaml拡張子で保存しました
  • データソースファイルのYAMLは整形式です
  • Hiera.yamlを変更した場合は、パペットマスターを再起動しました

私の/etc/puppet/hiera.yaml。 (少し異なりますが、機能するはずです)

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

シンボリックリンクは正しい

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

私のサンプルファイル:/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

YAMLが正常に機能したかどうかを確認するためにどのツールを使用するかは正確にはわかりません。ウェブサイトからコピーしたので大丈夫だと思います。

確かに、パペットマスターも再起動しました。

では、hieraツールが私に与えるエラーの問題は何でしょうか?

1
syss

%{::clientcert}の代わりに%{::fqdn}を使用するより安全なパスを選択しました。これは称賛に値します。ただし、ルックアップを実行するときは、::fqdn=debianではなくその値を指定してください。

さらに、:datadirではなく、puppetバックエンドに:datasourceオプションがあります( docs を参照)。

とりあえずpuppetバックエンドを削除することをお勧めします。本当に必要な場合は追加してください。ほとんどのユーザーはそうしません。

1
Felix Frank