Hiera 层次结构不尊重事实
Hiera hierarchy doesnt respect facter
背景
我的hiera.yaml长得像
version: 5
defaults:
datadir: /etc/puppet/hieradata
hierarchy:
- name: "YAML data: environments, stages, roles, common"
data_hash: yaml_data
paths:
- "roles/%{role}/common.yaml"
- "roles/common.yaml"
- "common.yaml"
hieradata文件夹有以下文件
/etc/puppet/hieradata/roles/development/common.yaml
/etc/puppet/hieradata/roles/common.yaml
/etc/puppet/hieradata/common.yaml
以上所有文件都有以下内容
---
foo : "bar"
我的事实输出如下
[root@allinone puppet]# facter role
development
问题陈述
当执行 puppet lookup foo
命令时,按预期输出 bar
。
我删除了文件/etc/puppet/hieradata/common.yaml
,仍然输出bar
。这很好。
但是当我删除 /etc/puppet/hieradata/roles/common.yaml
时,输出也没有显示任何内容。它不尊重文件 /etc/puppet/hieradata/roles/development/common.yaml
有什么原因吗?
我可以使用 facter 命令查看事实 role
。但我的老板不尊重这一点。
我也在hiera.yaml
中尝试了以下
- "roles/%{::role}/common.yaml"
- "roles/%{facts.role}/common.yaml"
但无济于事
经过繁琐的调试过程,问题出在事实文件上。
那些事实文件具有 Windows 风格的行尾。更改为 linux 样式后,一切正常。
背景
我的hiera.yaml长得像
version: 5
defaults:
datadir: /etc/puppet/hieradata
hierarchy:
- name: "YAML data: environments, stages, roles, common"
data_hash: yaml_data
paths:
- "roles/%{role}/common.yaml"
- "roles/common.yaml"
- "common.yaml"
hieradata文件夹有以下文件
/etc/puppet/hieradata/roles/development/common.yaml
/etc/puppet/hieradata/roles/common.yaml
/etc/puppet/hieradata/common.yaml
以上所有文件都有以下内容
---
foo : "bar"
我的事实输出如下
[root@allinone puppet]# facter role
development
问题陈述
当执行 puppet lookup foo
命令时,按预期输出 bar
。
我删除了文件/etc/puppet/hieradata/common.yaml
,仍然输出bar
。这很好。
但是当我删除 /etc/puppet/hieradata/roles/common.yaml
时,输出也没有显示任何内容。它不尊重文件 /etc/puppet/hieradata/roles/development/common.yaml
有什么原因吗?
我可以使用 facter 命令查看事实 role
。但我的老板不尊重这一点。
我也在hiera.yaml
中尝试了以下- "roles/%{::role}/common.yaml"
- "roles/%{facts.role}/common.yaml"
但无济于事
经过繁琐的调试过程,问题出在事实文件上。
那些事实文件具有 Windows 风格的行尾。更改为 linux 样式后,一切正常。