【问题标题】:Where to put hiera files in puppet hiera setup在 puppet hiera setup 中放置 hiera 文件的位置
【发布时间】:2017-01-18 08:45:41
【问题描述】:

我有一个正在运行的 puppet master-agent 设置,目前正试图弄清楚如何使用 hiera 来配置 php。

我的木偶文件:

forge "http://forge.puppetlabs.com"

mod "jfryman/nginx"
mod "puppetlabs/mysql"
mod "mayflower/php"
mod 'puppetlabs-vcsrepo'
mod 'puppetlabs/ntp', '4.1.0'
mod 'puppetlabs/stdlib'

我的site.pp

hiera_include('classes')

我的environment.conf,维护模块路径:

manifest = site.pp
modulepath = modules:site

我在/etc/puppetlabs/puppet/hiera.yml 的 puppet master 上的 hiera 配置:

---
:backends:
  - yaml
:hierarchy:
  - "nodes/%{::trusted.certname}"
  - "environment/%{server_facts.environment}"
  - common

:yaml:
# datadir is empty here, so hiera uses its defaults:
# - /etc/puppetlabs/code/environments/%{environment}/hieradata on *nix
# - %CommonAppData%\PuppetLabs\code\environments\%{environment}\hieradata on Windows
# When specifying a datadir, make sure the directory exists.
  :datadir:

据我了解,应该存在于所有服务器上的一般配置进入common.yaml。通过这个设置,我设法在我的节点上安装了 ntp,这个配置位于 hieradata/common.yaml:

---
classes:
 - 'profile::base'

ntp::servers:
  - server 0.de.pool.ntp.org
  - server 1.de.pool.ntp.org
  - server 2.de.pool.ntp.org
  - server 3.de.pool.ntp.org

现在,我的层次结构还指出所有节点特定的配置都应该进入hieradata/nodes/{fqdn-of-the-node}.yml

现在,终于来回答我的问题了:

我有一个文件hieradata/nodes/myserver.example.com.yml,里面有这个:

classes:
  - 'profile::php'

还有site/profile/manifests/php.pp下的清单:

class profile::php {
  class { '::php': }
}

但这并没有提供 php.ini 文件。如你所见,我使用的是来自 forge 的mayflower/php

现在,我的两个问题是:

我的 php hiera 文件在正确的位置吗?那么我错过了什么让它向我的代理提供 php?

【问题讨论】:

    标签: puppet hiera


    【解决方案1】:

    这里有多个问题/可能性,所以让我们反复研究它们。


    首先,您使用的是默认的datadir

    /etc/puppetlabs/code/environments/%{environment}/hieradata
    

    但是,您有以下优先级:

    "environment/%{server_facts.environment}"
    

    这没有意义,因为您有一个优先级,可以根据目录环境区分节点的数据,但您也将 hieradata 直接放置在目录环境中。如果您希望基于目录环境的优先级,则将您的 hieradata 目录更改为在直接环境之外:

    /etc/puppetlabs/code/hieradata
    

    否则,您应该从优先级中删除该级别,因为它不会增加任何价值并且会增加查找时间。


    第二,你没有显示你的site.pp,但是你还记得你的hiera_include('classes')吗?这将查找数组 classes 然后包含它们,这就是您想要的。如果您不这样做,则会发生您描述的节点配置问题。


    第三,site 在你的modulepath 中吗?您需要将其附加到您的puppet.confenvironment.conf


    第四,您节点的fqdn 可能与certname 不匹配。检查 Puppetmaster 上的 certs 目录以获取节点的证书。


    旁注:

    • 您问题的前半部分包含很多无关信息,并且缺少很多有用的相关信息。请考虑编辑问题以提供更多有用的信息并更简洁。
    • 由于ntp 工作,我假设您的模块使用r10k 安装到环境目录中成功。此外,我假设这些模块存在于您节点的目录环境中。
    • 没有真正的理由在您的声明中使用::phpphp 类指定为全局类。

    【讨论】:

    • 谢谢!我缩短了介绍。另外,我添加了包含模块路径的 site.pp 和 environment.conf。此外,我使用puppet cert list --all 检查我的证书,证书名称包含在其中,并且有+,我理解这意味着它已被添加。此外,我按照您的建议从层次结构中删除了环境部分。无论如何,我并没有真正打算使用它。不过,它并没有提供 php。
    • 其实我不知道你把php 作为一个全局模块是什么意思。这些模块存在于我的环境路径中。
    • @Chrisissorry 我更新了答案以澄清全球 php 声明评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多