Какой самый простой способ установки 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 вручную? Или есть какой-нибудь более простой способ сделать это?

1 ответ

Решение

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
}

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

Другие вопросы по тегам