我很努力地理解hiera使用數據的方式,在我看來,像使用frontmatter包含全局數據文件的普通yaml會更簡單和更強大。Puppet Hiera在更具體的文件中訪問全局對象
在任何情況下,我想完成這樣的事情:
# global.yaml
collection1: &collection1
foo: 1
collection2: &collection2
bar: 2
collection3: &collection3
baz: 3
# development_environment.yaml
collection:
<<: *collection1
<<: *collection2
# production_environment.yaml
collection:
<<: *collection2
<<: *collection3
從本質上講,這樣我就可以在一個地方保持了幾件事情列表,然後以不同的方式取決於它們組合環境。 Hiera有一個合併頂級密鑰和深度合併的選項,但是我找不到任何關於在層次結構中包含更高級別數據的任何問題(對於我的特殊問題,如果有一種方法可以覆蓋數據在全局文件中,而不是將其合併到更具體的文件中,但似乎也不可能)。
我該怎麼做?我是否在所有不同的環境中手動複製基礎數據?
我意識到我可以在傀儡代碼中放置一個環境案例語句來選擇要包含哪些基本集合,但是打破了在傀儡中保留hiera和代碼中的數據的擔憂。如果我必須這樣做,我不妨完全跳過hiera並將我的數據放入傀儡模塊中。