Puppet 希拉不是';不能解决事实
我在Puppet和Hiera方面遇到了一些麻烦,因为Hiera似乎没有使用我在模板中要求的事实 我有一个Puppet 希拉不是';不能解决事实,puppet,hiera,Puppet,Hiera,我在Puppet和Hiera方面遇到了一些麻烦,因为Hiera似乎没有使用我在模板中要求的事实 我有一个/etc/puppetlabs/puppet/hiera.yaml文件,其中包含一个简单的示例层次结构: --- version: 5 defaults: datadir: "/etc/puppetlabs/code/environments/%{::environment}/hieradata" data_hash: yaml_data hierarchy: - name:
/etc/puppetlabs/puppet/hiera.yaml
文件,其中包含一个简单的示例层次结构:
---
version: 5
defaults:
datadir: "/etc/puppetlabs/code/environments/%{::environment}/hieradata"
data_hash: yaml_data
hierarchy:
- name: "Per-node data"
path: "nodes/%{trusted.certname}.yaml"
- name: "Per-OS defaults"
path: "os/%{facts.os.family}.yaml"
- name: "Common data"
path: "common.yaml"
然后我有一个傀儡代理,它运行并将事实发送给傀儡。当我在其上测试查找时,所有变量都扩展为空字符串:
> puppet lookup profiles --environment production --node puppet.example.local --explain
Searching for "lookup_options"
Global Data Provider (hiera configuration version 5)
Using configuration "/etc/puppetlabs/puppet/hiera.yaml"
Merge strategy hash
Hierarchy entry "Per-node data"
Path "/etc/puppetlabs/code/environments/production/hieradata/nodes/test-.yaml"
Original path: "nodes/test-%{trusted.certname}.yaml"
Path not found
Hierarchy entry "Per-OS defaults"
Path "/etc/puppetlabs/code/environments/production/hieradata/os/.yaml"
Original path: "os/%{facts.os.family}.yaml"
Path not found
Hierarchy entry "Common data"
Path "/etc/puppetlabs/code/environments/production/hieradata/common.yaml"
Original path: "common.yaml"
No such key: "lookup_options"
Searching for "profiles"
Global Data Provider (hiera configuration version 5)
Using configuration "/etc/puppetlabs/puppet/hiera.yaml"
Hierarchy entry "Per-node data"
Path "/etc/puppetlabs/code/environments/production/hieradata/nodes/.yaml"
Original path: "nodes/test-%{trusted.certname}.yaml"
Path not found
Hierarchy entry "Per-OS defaults"
Path "/etc/puppetlabs/code/environments/production/hieradata/os/.yaml"
Original path: "os/%{facts.os.family}.yaml"
Path not found
Hierarchy entry "Common data"
Path "/etc/puppetlabs/code/environments/production/hieradata/common.yaml"
Original path: "common.yaml"
No such key: "profiles"
Function lookup() did not find a value for the name 'profiles'
没有找到该值,但我认为这与此无关,因为它甚至没有查找任何真实的文件,这些文件都显示为nodes/.yaml
和os/.yaml
如果使用--debug
再次运行该命令,则可以看到有关节点的转储信息,其中包括以下事实:
Debug: Facter: fact "osfamily" has resolved to "RedHat".
...
Debug: Facter: fact "os" has resolved to {
architecture => "x86_64",
family => "RedHat",
hardware => "x86_64",
name => "CentOS",
release => {
full => "7.4.1708",
major => "7",
minor => "4"
},
Puppet:5.4.0在以下路径中指定事实文件
/etc/facter/facts.d/${your_component_facts}.sh
并授予所需的权限:
chmod +x /etc/facter/facts.d/${your_component_facts}.sh
这里是facter3.x?@MattSchuchard
Facter--version
显示为3.10.0。您没有在命令行中指定任何事实。puppet lookup
命令将获取并使用指定节点的最新事实,前提是这些事实记录在puppetdb中,并且该命令在具有访问权限的节点上运行。它不会像傀儡代理
或傀儡应用
那样自动收集事实。