[英]auto-create require parameters by data in hiera
有沒有辦法通過 hiera 創建 require 參數? 也許可以查找,但我是木偶新手,不知道所有可能性。
我正在使用oneview-puppet模塊從 puppet 應用程序創建資源。
資源由 hiera 創建,定義為一個配置文件 (YAML)。 在那里,我結合了上面模塊中的幾個資源。 這些資源具有復雜的依賴性。 可在此處找到概述(第 29 頁)。
因此,對於每個資源,我都必須要求依賴項,盡管它可以在我的配置文件中“找到”。 實際上它只在站點/清單/init.pp中由它的序列創建的資源時才有效。
我嘗試在 hiera 中添加 require 參數,但它會被解釋為字符串。
站點/oneviewconf/manifest/init.pp 示例:
class oneviewconf (
Hash $oneview_ethernet_networks = {},
Hash $oneview_logical_interconnect_groups = {}
)
{
$oneview_ethernet_networks.each | $k,$v | {
oneview_ethernet_network { $k: # -> oneview-puppet resource
* => $v,
}
}
$oneview_logical_interconnect_groups.each | $k,$v | {
oneview_logical_interconnect_group { $k: # -> oneview-puppet resource
require => Oneview_ethernet_network['VLAN0001']
* => $v,
}
}
}
希拉示例:
---
oneviewconf::oneview_ethernet_networks:
VLAN0001:
ensure: present
data:
name: 'VLAN0001'
vlanId: 0001
oneviewconf::oneview_logical_interconnect_groups:
LIG_A:
ensure: present
data:
name: 'LIG_A'
networkUris: ['VLAN0001']
有沒有辦法通過 hiera 創建 require 參數?
是的。
我嘗試在 hiera 中添加 require 參數,但它會被解釋為字符串。
如果您正確格式化,則不會。 如果您查看已編譯的 Puppet 目錄,您可以看到資源引用是如何在 JSON 目錄中編碼的,這也告訴您它們需要如何在 Hiera YAML 文件中編碼。
采取這樣的清單:
class test {
notify { 'notify1':
message => 'I am notify 1',
require => Notify['notify2'],
}
notify { 'notify2':
'message' => 'I am notify 2',
}
}
現在編譯該目錄並查看它的內部。 你會看見:
{
"type": "Notify",
"title": "notify1",
...
"parameters": {
"message": "I am notify 1",
"require": "Notify[notify2]"
}
},
如果這不明顯,而清單要求引用資源標題,如Notify['notify2']
,資源標題周圍的引號將在目錄中刪除,並變為Notify[notify2]
。
因此,我可以以同樣的方式向 Hiera 添加一個參數,然后像這樣重構整個事情。
希拉:
---
notify_resources:
notify1:
message: I am notify 1
require: Notify[notify2]
notify2:
message: I am notify 2
清單:
class test {
$notify_resources = lookup('notify_resources')
$notify_resources.each |$k,$v| {
notify { $k: * => $v }
}
}
你應該這樣做嗎? 我傾向於同意 John Bollinger 的評論,即 Hiera 中的資源引用可能是您有太多數據/代碼耦合的線索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.