簡體   English   中英

木偶:不同節點上資源之間的關系

[英]Puppet: relationship between resources on different nodes

我知道我們可以指定資源之間的關系,從而確定部署順序。 但是有可能在Puppet中不同節點上的資源之間創建關系嗎?

例如,我在節點A中有apache Web服務器,在節點B中有mysql服務器。我想先啟動mysql,然后再啟動apache web服務器。 我該如何用人偶語言表達?


我嘗試了以下代碼:

node ‘host1’ {
  @@service { ‘mysql’:
    ensure => running,
    tag => ‘host1-mysql’,
  }
}
node ‘host2’ {
  service { ‘apache2’:
    ensure => running,
  }
  Service<<| tag == ‘host1-mysql’ |>> -> Service[‘apache2’]
}

但這沒有用-產生了編譯錯誤。 還有其他解決方案嗎?

在分布式“人偶”設置中,不能保證申請順序。

木偶跨多個節點進行編排 充其量,您的更改將在計算機上多次應用, 最后收斂到所需的狀態

依賴項僅在同一節點上工作。 實際上,您可以獲取由其他節點導出的資源的值(例如,配置數據庫的防火牆以允許Web服務器執行sql),或者通過hiera作弊以了解誰具有“ db”和“ app”角色。

對於編排,請參見mcollective ,capistrano, ansible ,...之類的工具。

每當資源依賴於另一資源時,請使用before或require元參數,或使用->鏈接資源。 每當另一個資源更改時需要刷新資源時,請使用notify或subscription元參數,或使用~>鏈接資源。 某些資源(如果看到)將自動要求其他資源,這可以節省您的精力。

請參閱鏈接以獲取更多精度。

在聲明/實例化這些類的init.pp中,用參數化類語法替換include語句:

class {"taskname":} -> class {"taskname2":}
這將確保在taskname2之前調用taskname。

檢查鏈接

puppet node dependency進行一些谷歌搜索會發現有關導出資源的一些鏈接,這似乎是可行的方法。

根據http://docs.puppetlabs.com/puppet/latest/reference/lang_exported.html

導出的資源允許節點彼此共享信息。

基本上,您將資源導出到其所屬的節點中,並在需要該資源的節點中進行收集,並照常使用依賴項箭頭。

MCollective似乎也可以替代,但似乎是一個全新的框架。

您不能僅使用Puppet來做到這一點。 從概念上講,使用Puppet可以生成節點配置的靜態描述,然后將其應用。 導出的資源系統很方便,但是並沒有從根本上改變Puppet的工作方式(您可以通過注意到您可以對資源進行硬編碼來說服自己,這將產生完全相同的效果)。

因此,您需要另一種業務流程系統,並且不應在服務上設置enable => running

不幸的是,我沒有很好的建議:

  • 我僅使用心跳,以我的經驗,它很難配置,不可靠且非常有限(僅支持少數幾個節點)。
  • Ubuntu有一個juju工具,可以完全滿足您的需求,並且似乎易於使用,但是我沒有使用它的經驗。
  • 您的選擇分布中可能存在等同的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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