为什么数据不是来自我的层次文件



我使用的是Puppet Enterprise 3.7.2,在我的一个节点上我创建了这个文件:

[root@vii-osc4-mgmt-001 ~]# cat /etc/profile.d/POD_prefix.sh 
export FACTER_pod_prefix=vii-osc4

然后我重新启动了该节点并重新登录并验证了这一点设置FACTER_pod_prefix,然后FACTER_pod_prefix输出期望值。

[root@vii-osc4-mgmt-001 ~]# env | grep FACTER_pod_prefix
FACTER_pod_prefix=vii-osc4
[root@vii-osc4-mgmt-001 ~]# facter pod_prefix
vii-osc4

在我的PE 3.7 Puppet master上我创建了/var/lib/hiera/vii-osc4.yaml文件。我创建了/var/lib/hiera/vii-osc4从/var/lib/hiera/defaults.yaml我一直在使用的文件,如下所示:

# cp /var/lib/hiera/defaults.yaml /var/lib/hiera/vii-osc4.yaml

这个文件有一堆类参数值。举个例子文件中的行:

controller_vip_name: vii-osc4.example.com 

然后我改变了我的等级。

[root@osc4-ppt-001 ~]# cat /etc/puppetlabs/puppet/hiera.yaml
---
:backends:
  - yaml
:hierarchy:
  - "%{pod_prefix}"
  - defaults
  - "%{clientcert}"
  - "%{environment}"
  - global
:yaml:
# datadir is empty here, so hiera uses its defaults:
# - /var/lib/hiera on *nix
# - %CommonAppData%PuppetLabshieravar on Windows
# When specifying a datadir, make sure the directory exists.
  :datadir:

然后我重新启动我的pe-httpd服务,像这样(RHEL7):

# systemctl restart pe-httpd

然后我对/var/lib/hiera/vii-osc4.例如Yaml

controller_vip_name: vii-osc4.example.com

……

controller_vip_name: VII-osc4.example.com

但是当我在我的节点vii-osc4-mgmt-001上运行puppet agent -t --noop时,我没有看到变化我期望看到的如果我在/var/lib/hiera/defaults.然后是Yaml在我的节点上运行puppet agent -t --noop,我确实看到了预期的变化。我哪里做错了?

更新:使用/etc/facter/facts.d方法设置自定义事实。

我研究了使用/etc/facter/facts.d我想做什么。我要做的是设置一个自定义的事实"pod_prefix"。我想在我的分层中使用这个事实。我喜欢这样…

---
:backends:
  - yaml
:hierarchy:
  - "%{::pod_prefix}"
  - defaults
  - "%{clientcert}"
  - "%{environment}"
  - global
:yaml:
# datadir is empty here, so hiera uses its defaults:
# - /var/lib/hiera on *nix
# - %CommonAppData%PuppetLabshieravar on Windows
# When specifying a datadir, make sure the directory exists.
  :datadir:

…这样,将pod_prefix设置为vii-osc4的节点将从文件/var/lib/hiera/vii-osc4/yaml获得它们的类参数,而将pod_prefix设置为ix-xyz的主机将从/var/lib/hiera/ix-xyz.yaml获得它们的类参数。我不知道如何在我的puppet master上创建包含以下内容的文件/etc/facter/facts.d/pod_prefix.txt

# cat pod_prefix.txt 
pod_prefix=vii-osc4

…也许能解决我的问题。我想我一定是误会了什么。有人能帮忙吗?

2 .

更新

/etc/factor/facts.d/pod_prefix.txt文件放在我的节点上。我认为我最大的问题是仅仅执行systemctl restart pe-httpd是不够的,直到我完全重新启动我的puppet master,事情才开始工作。我需要去看看文档,找出重启"puppet master"的正确方法。

通过环境变量管理自定义事实的方法非常脆弱。在这种情况下,我怀疑它不起作用,因为您通过/etc/profile.d更改了登录shell 的环境。但是,系统服务不能在这样的shell中运行。

一种干净的方法是在/etc/facter/facts.d中定义事实值。

相关内容

  • 没有找到相关文章

最新更新