![](/img/trans.png)
[英]In Puppet using Hiera, where do I put the files I want to have installed on nodes?
[英]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.conf
或environment.conf
。
第四,您節點的fqdn
可能與certname
不匹配。 檢查Puppetmaster上的certs目錄以獲取節點的證書。
旁注:
ntp
工作,我假設您成功將使用r10k
的模塊安裝到環境目錄中。 我還假設模塊存在於您節點的目錄環境中。 php
與你的聲明類作為全球::php
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.