Puppet

如何使用 Puppet 部署應用程序(在 .tar.gz 中)?

  • February 16, 2015

我是 Puppet 的初學者,我想知道我是否以正確的方式使用 Puppet 部署應用程序。

應用程序位於 tar.gz 文件中,其中包含帶有版本號的文件。所以,我這樣做是為了部署(我在伺服器上重新啟動客戶端以獲取新的 tarball):

nodes.pp

node 'server1.domain.com' inherits basenode {
   apps { apps:
           version => 56,
           apps_name => "apps_tarball.tgz",
   }


init.pp (modules)

exec {"apps_wget":
           command => "/usr/bin/wget http://web_server/${version}-${apps_name} -O /tmp/${container_zip_name}",
           unless  => "test -f /tmp/${version}-${apps_name}",
           require => [ Package["wget"] ],
   }

exec {"apps_unzip":
           cwd     => "/usr/local/apps/path",
           command => "/usr/bin/unzip /tmp/${version}-${apps_name}",
           unless  => "test -f /usr/local/apps/path/apps-version-${version}",
           require => [ Package["unzip"], Exec["container_wget"] ],
   }

但是,當我要升級時,不知道說Puppet刪除舊目錄?例如,如果我想將版本56升級到57:我必須刪除56的版本目錄。

我聽說過 Capristrano,使用 Puppet 管理軟體包、配置文件和使用 Capristrano 部署應用程序似乎更好,不是嗎?

謝謝。

我想知道我是否以正確的方式使用 Puppet 部署應用程序。

不,你不是。

您應該使用作業系統上可用的包管理。如果您的軟體是格式的,tar.gz您應該在本地將其重新打包為或其他格式。.deb``.rpm

如果軟體是本地開發的,您應該使用任何可用的建構/部署工具。

您可能想嘗試使用fpm來製作 tarball 的 RPM 或 DEB;它使用起來真的很簡單,你不需要了解任何你不想了解的包格式。

要回答您最初的問題,使用 Puppet 部署應用程序的正確方法是讓 Puppet 做的工作盡可能少;下載和提取 tarball 的任何復雜exec資源都必然非常非常脆弱,yum install從長遠來看,將 Puppet 製作為一個包會更健康。

引用自:https://serverfault.com/questions/296299