簡體   English   中英

通過 hiera 中的數據自動創建需要參數

[英]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.

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