![](/img/trans.png)
[英]Relationship between different hbase-site.xml for a Cloudera install
[英]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 ,...之類的工具。
對puppet node dependency
進行一些谷歌搜索會發現有關導出資源的一些鏈接,這似乎是可行的方法。
根據http://docs.puppetlabs.com/puppet/latest/reference/lang_exported.html
導出的資源允許節點彼此共享信息。
基本上,您將資源導出到其所屬的節點中,並在需要該資源的節點中進行收集,並照常使用依賴項箭頭。
MCollective似乎也可以替代,但似乎是一個全新的框架。
您不能僅使用Puppet來做到這一點。 從概念上講,使用Puppet可以生成節點配置的靜態描述,然后將其應用。 導出的資源系統很方便,但是並沒有從根本上改變Puppet的工作方式(您可以通過注意到您可以對資源進行硬編碼來說服自己,這將產生完全相同的效果)。
因此,您需要另一種業務流程系統,並且不應在服務上設置enable => running
。
不幸的是,我沒有很好的建議:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.