2014-07-23 100 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我更新了我的答案,以包含一个(丑陋的)替代方案。 –