Какой самый простой способ установки 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
}
чтобы убедиться, что конфликтующие пакеты не установлены на машине.