Debian

通過 Puppet 安裝 Tomcat7 的最簡單方法是什麼?

  • March 30, 2015

我正在嘗試建構簡單的 Puppet 配方,如下所示:

package { 'openjdk-7-jre-headless' :  ensure => installed, }
package { 'tomcat7-common' :          ensure => installed, }
package { 'tomcat7' :                 ensure => installed, require  => Package['tomcat7-common'],}
package { 'tomcat7-admin' :           ensure => installed, require  => Package['tomcat7-common'], }

但是,當執行時sudo puppet apply -v tomcat7.pp,我仍然有這些錯誤:

錯誤:/階段

$$ main $$//包裹$$ tomcat7-common $$/ensure:從清除更改為存在失敗:執行“/usr/bin/apt-get -q -y -o DPkg::Options::=–force-confold install tomcat7-common”返回 100:讀取包列表… 以下軟體包具有未滿足的依賴關係: tomcat7-common :

取決於:libtomcat7-java (>= 7.0.28-4+deb7u1) 但不會安裝

E: 無法糾正問題,您持有破損的包裹。

每次我添加新包時,我的文件都在增長,難以閱讀。我真的需要手動指定所有 Tomcat 依賴項嗎?或者有沒有更簡單的方法?

Puppet 應該自動處理依賴關係,所以應該工作的簡單清單是:

package { [ 'tomcat7', 'tomcat7-admin' ]: ensure => installed, }

但是,根據問題(例如安裝舊的 Tomcat 或損壞的依賴項),應手動解決這些問題。例如,通過手動執行apt-get tomcat7並檢查阻止它的原因(例如,“以下包將被刪除”部分)。

使用 Puppet,有以下解決方法:

package { "tomcat7":
 ensure  => latest,
 require  => Exec['apt-get update'],
}

或者通過定義absent(或purged),例如:

package { [ 'tomcat6', 'tomcat6-common', 'libtomcat6-java','solr-tomcat' ]:
 ensure => absent
}

以確保沒有在機器上安裝有衝突的軟體包。

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