我的人偶查找呼叫(使用hiera进行基本测试)时看到此错误:
puppet lookup --explain foo
Searching for "lookup_options"
Global Data Provider (hiera configuration version 5)
No such key: "lookup_options"
Searching for "foo"
Global Data Provider (hiera configuration version 5)
No such key: "foo"
Function lookup() did not find a value for the name 'foo'
尝试直接的hiera查找工作:
hiera -d foo
DEBUG: 2019-01-16 11:53:39 +0000: Hiera YAML backend starting
DEBUG: 2019-01-16 11:53:39 +0000: Looking up foo in YAML backend
DEBUG: 2019-01-16 11:53:39 +0000: Looking for data source common
DEBUG: 2019-01-16 11:53:39 +0000: Found foo in common
bar
我的hiera.yaml文件(位于/ etc中):
---
version: 5
hierarchy:
- name: Common
path: common.yaml
defaults:
data_hash: yaml_data
datadir: data
我的common.yaml文件(位于/ var / lib / hiera中):
---
foo: bar
任何人都可以解释为什么我看到此错误(对Puppet来说是很新的)...
答案 0 :(得分:2)
这是文件位置问题。
我有:
▶ cat spec/fixtures/hiera/hiera.yaml
---
version: 5
hierarchy:
- name: Common
path: common.yaml
defaults:
data_hash: yaml_data
datadir: data
结构:
▶ tree spec/fixtures/hiera
spec/fixtures/hiera
├── data
│ └── common.yaml
└── hiera.yaml
命令行:
▶ puppet lookup --hiera_config=spec/fixtures/hiera/hiera.yaml foo
--- bar
请注意,data
的{{1}}中引用的hiera.yaml
目录必须相对于defaults.datadir
所在的目录。Ref:
datadir-存放数据文件的目录;如果您设置了默认值,则可以省略。
此路径相对于hiera.yaml的目录:如果配置文件位于/etc/puppetlabs/code/environments/production/hiera.yaml,并且datadir设置为data,则数据目录的完整路径为/ etc / puppetlabs / code / environments / production / data。
在全局层中,可以选择将datadir设置为绝对路径;在其他层中,它必须始终是相对的。