Puppet
如何使用 Puppet 部署應用程序(在 .tar.gz 中)?
我是 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 製作為一個包會更健康。