2014-07-23 23 views
0

我有一個木偶大師,可以將我的應用程序構建到主文件夾中。例如。 xxxxx_v1.0.0.zip和yyyyy_v1.0.8.zip [xxxxx被部署到一系列服務器,yyyyy被部署到另一組服務器]。Puppet - 識別新版本並部署

什麼是最好的方式來處理在我的應用程序版本的新版本的puppet master上採購,而不需要編輯主文件上的.pp文件以引用文件名上的新版本號,最好是自動的。

感謝

回答

0

建立一個合適的包爲您的操作系統,而不是一個好辦法。木偶可以使用那些

package { 'application-x': ensure => latest } 

如果做不到這一點,你從什麼地方獲取您的應用程序元數據,例如解決這個

  • 在代理端,與wgetexec,然後讓它運行一個腳本來使用像木偶儀表板,或ENC更好,但Hiera,牽你的最新版本信息的主端執行,如果有必要
  • 部署

如果你真的想通過Puppet的fileserver來做到這一點,而不觸及任何元數據,只需將文件放入你的模塊中,你可以嘗試使用generate函數。

$latest_zip_application_x = generate("/usr/local/bin/find_latest application_x") 
file { 'application_x.zip': 
    ... 
    source => "puppet:///modules/application_x/path/to/$latest_zip_application_x", 
} 

其中/usr/local/bin/find_latest是一個腳本,會發現最近你的包的版本,並將其寫入到標準輸出。

雖然這是非常可怕的做法 - 你真的不適合Puppet的構造像這樣的優勢。

+0

非常感謝Felix。我向主方提出了更多要求,我如何選擇放在文件夾(在主文件夾中)進行部署的新版本。任何指針?順便說一句,我也用mco。 –

+0

@ user1882828我更新了我的答案,以包含一個(醜陋的)替代方案。 –