Назад | Перейти на главную страницу

Какой самый простой способ установить Tomcat7 через 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] / sure: изменить с очищенного на настоящее не удалось: выполнение '/ 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
}

чтобы гарантировать, что на машине не установлены конфликтующие пакеты.