簡體   English   中英

在 puppet 中使用模塊 hiera 時遇到一些問題

[英]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 只是空的。

我已采取的故障排除步驟:

  1. hiera 更改后重新啟動 puppetserver
  2. 嘗試使用 $usehira::apples
  3. 嘗試使用 hiera('apples')
  4. 在 data/ 中移動我的 hiera.yaml
  5. 使用帶有 --explain 的查找並沒有真正給我任何有用的東西,只是說沒有找到 lookup()

誰能幫我嗎? 我已經被這個問題困擾了很長時間,但不確定可能是什么問題。

正如@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM