繁体   English   中英

在人偶hiera设置中将hiera文件放在哪里

[英]Where to put hiera files in puppet hiera setup

我有一个正在运行的puppet主代理设置,当前正在尝试弄清楚如何使用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上的/etc/puppetlabs/puppet/hiera.yml配置:

---
: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 通过此设置,我设法使用hieradata/common.yaml上的此配置在节点上安装了ntp:

---
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下的site/profile/manifests/php.pp

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

但这不提供php。 如您所见,我使用伪造的mayflower/php

现在,我的两个问题是:

我的hiera php文件在正确的位置吗? 我想让它为我的经纪人提供php时会丢失什么?

您在这里有多个问题/可能性,所以让我们迭代地解决它们。


首先,您使用的默认数据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的模块安装到环境目录中。 我还假设模块存在于您节点的目录环境中。
  • 有没有真正的理由指定php与你的声明类作为全球::php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM