Puppet hiera 未正确继承(Puppet 版本 4.3.2)
Puppet hiera not inheriting properly (Puppet version 4.3.2)
我的 /etc/puppetlabs/code
文件夹结构:
[vagrant@client code]$ pwd
/etc/puppetlabs/code
[vagrant@client code]$ tree
.
├── environments
│ ├── production
│ │ ├── environment.conf
│ │ ├── hieradata
│ │ ├── manifests
│ │ └── modules
│ └── test
│ ├── hieradata
│ ├── manifests
│ │ └── site.pp
│ └── modules
├── hieradata
│ ├── common.yaml
│ └── hostname
│ └── client.yaml
├── hiera.yaml
└── modules
然后,对于我的 YAML 文件:
[vagrant@client code]$ cat hiera.yaml
---
:backends:
- yaml
:hierarchy:
- "hostname/%{facts.hostname}"
- "os/%{facts.osfamily}"
- common
:yaml:
:datadir: /etc/puppetlabs/code/hieradata
merge_behavior: deeper
[vagrant@client code]$ cat hieradata/common.yaml
---
users:
jill:
uid: 1000
home: '/home/jill'
jack:
uid: 1001
home: '/home/jack'
[vagrant@client code]$ cat hieradata/hostname/client.yaml
---
users:
jill:
home: '/homes/jill'
jack:
home: '/homes/jack'
jane:
uid : 999
home: '/homes/jane'
然而,当我 运行 hiera 时,我得到以下信息:
[vagrant@client code]$ hiera --hash users
{"jill"=>{"uid"=>1000, "home"=>"/home/jill"},
"jack"=>{"uid"=>1001, "home"=>"/home/jack"}}
[vagrant@client code]$ hiera --hash users ::hostname=client
{"jill"=>{"uid"=>1000, "home"=>"/home/jill"},
"jack"=>{"uid"=>1001, "home"=>"/home/jack"}}
我的 hieradata/hostname/client.yaml
应该覆盖 common.yaml
,导致 hiera
命令 return 在提交 ::hostname=client
时有所不同。
我做错了什么?
$facts 哈希由 puppet 代理/apply 设置,我不希望它在您尝试通过 hiera 命令行验证您的设置时可用。
您可以在层次结构中使用 - "hostname/%{::hostname}"
从 hiera cmd 获得预期结果,或者考虑使用 puppet 命令行来验证您的设置。
我的 /etc/puppetlabs/code
文件夹结构:
[vagrant@client code]$ pwd
/etc/puppetlabs/code
[vagrant@client code]$ tree
.
├── environments
│ ├── production
│ │ ├── environment.conf
│ │ ├── hieradata
│ │ ├── manifests
│ │ └── modules
│ └── test
│ ├── hieradata
│ ├── manifests
│ │ └── site.pp
│ └── modules
├── hieradata
│ ├── common.yaml
│ └── hostname
│ └── client.yaml
├── hiera.yaml
└── modules
然后,对于我的 YAML 文件:
[vagrant@client code]$ cat hiera.yaml
---
:backends:
- yaml
:hierarchy:
- "hostname/%{facts.hostname}"
- "os/%{facts.osfamily}"
- common
:yaml:
:datadir: /etc/puppetlabs/code/hieradata
merge_behavior: deeper
[vagrant@client code]$ cat hieradata/common.yaml
---
users:
jill:
uid: 1000
home: '/home/jill'
jack:
uid: 1001
home: '/home/jack'
[vagrant@client code]$ cat hieradata/hostname/client.yaml
---
users:
jill:
home: '/homes/jill'
jack:
home: '/homes/jack'
jane:
uid : 999
home: '/homes/jane'
然而,当我 运行 hiera 时,我得到以下信息:
[vagrant@client code]$ hiera --hash users
{"jill"=>{"uid"=>1000, "home"=>"/home/jill"},
"jack"=>{"uid"=>1001, "home"=>"/home/jack"}}
[vagrant@client code]$ hiera --hash users ::hostname=client
{"jill"=>{"uid"=>1000, "home"=>"/home/jill"},
"jack"=>{"uid"=>1001, "home"=>"/home/jack"}}
我的 hieradata/hostname/client.yaml
应该覆盖 common.yaml
,导致 hiera
命令 return 在提交 ::hostname=client
时有所不同。
我做错了什么?
$facts 哈希由 puppet 代理/apply 设置,我不希望它在您尝试通过 hiera 命令行验证您的设置时可用。
您可以在层次结构中使用 - "hostname/%{::hostname}"
从 hiera cmd 获得预期结果,或者考虑使用 puppet 命令行来验证您的设置。