我正在尝试构build如下简单的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 ,我仍然有这些错误:
err:/ stage [main] //包[tomcat7-common] /确保:从purged改变为present失败:执行/ usr / bin / apt-get -q -y -o DPkg :: Options :: = -force-confold安装tomcat7-common'返回100:正在读取软件包列表…
以下软件包具有未满足的依赖关系:tomcat7-common:
- 我是否需要为iptables上的传出规则设置源和目标端口的规则?
- 在Puppet服务器上重复声明
- 恢复木偶configuration
- puppet中的资源types无效
- refreshonly不与傀儡exec资源工作
取决于:libtomcat7-java(> = 7.0.28-4 + deb7u1),但它不会被安装
E:无法纠正问题,你已经拿破包了。
每当我添加新的软件包,我的文件越来越难以阅读。 我真的需要手动指定所有Tomcat依赖项吗? 还是有更简单的方法呢?
木偶应该自动处理依赖关系,所以应该工作的简单清单是:
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 }
以确保机器上未安装冲突的软件包。