人偶查找无法找到层次结构键值

时间:2019-01-16 11:59:24

标签: puppet hiera

我的人偶查找呼叫(使用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来说是很新的)...

1 个答案:

答案 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设置为绝对路径;在其他层中,它必须始终是相对的。