[英]Having some trouble using module hiera in puppet
我在使用模塊 hiera 數據時遇到了一些問題。
模塊:/etc/puppetlabs/code/environments/production/modules/usehiera
樹結構:
usehiera
usehiera/hiera.yaml
usehiera/data
usehiera/data/common.yaml
usehiera/manifests
usehiera/manifests/init.pp
hiera.yaml:
---
version: 5
defaults:
datadir: data
data_hash: yaml_data
hierarchy:
- name: 'common'
- path: 'common.yaml'
數據/common.yaml:
---
usehiera::apples: 'this is some data'
清單/init.pp:
class usehiera{
file{'/tmp/hiera_lookup.txt':
ensure => present,
#content => hiera('oranges') #this works with global hiera
content => $apples
}
}
正如您所看到的,當我在我的節點上運行這個模塊時,我似乎讓全局 hiera 與“hiera('oranges')”一起工作。 當我嘗試使用模塊 hiera 數據時,木偶運行成功完成,但 hiera_lookup.txt 只是空的。
我已采取的故障排除步驟:
誰能幫我嗎? 我已經被這個問題困擾了很長時間,但不確定可能是什么問題。
正如@MattSchuchard 在評論中指出的那樣,您的hiera.yaml
不正確。該文檔包含示例。
但更大的問題似乎是不正確的期望。 顯然,您假設普通類變量$usehiera::apples
將自動采用與模塊級 hiera 數據中相應鍵關聯的值,但事實並非如此。 Hiera 數據——無論是全局、環境級別還是模塊級別——自動綁定到類參數,但不會綁定到其他類變量。
您可以通過顯式查找從 hiera 數據設置普通類變量:
# the hiera() function is deprecated; use lookup():
$apples = lookup('usehiera::apples')
或者,您可以將$apples
類參數:
class usehiera(String $apples) {
file{'/tmp/hiera_lookup.txt':
ensure => 'present',
content => $apples,
}
}
請注意,如果您將其設置為參數,那么它的值也可以通過類資源類聲明進行自定義,該類聲明優先於您的 Hiera 數據。
另請注意,全局、每個環境和特定於模塊的 Hiera 數據之間的區別只是范圍和優先級,而不是功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.