В настоящее время я пытаюсь обновить свою машину Vagrant с модулями Puppet до PHP7, и, конечно, с обновленными модулями. Однако после обновления модуля puppetlabs/apache до версии 3.0.0, он терпит неудачу при попытке установить libapache2-mod-php7.0
.
Я уже смог отследить причину. По какой-то причине модуль puppetlabs/apache устанавливает два MPM, когда ::apache::mod::php
вызывается класс. Он устанавливает оба события как prefork MPM. Причина, по которой устанавливается prefork, заключается в том, что модуль Puppet требует, чтобы вы загружали либо модуль prefork, либо itk при использовании PHP. Когда я определяю prefork или itk, он также загружает MPM события по какой-то причине. На данный момент вот как я вызываю модуль apache:
class { '::apache':
default_vhost => false,
mpm_module => 'false',
server_signature => 'Off',
}
class { '::apache::mod::ssl': }
class { '::apache::mod::prefork': }
class { '::apache::mod::php': }
class { '::apache::mod::rewrite': }
class { '::apache::mod::headers': }
Когда я устанавливаю mpm_module на что-либо, кроме itk или prefork, он генерирует ошибку itk или prefork is required. Когда я удаляю ::apache::mod::prefork
и устанавливаю настройку mpm_module на prefork, происходит то же самое, что и с текущей конфигурацией.
Когда я подключаюсь по ssh к Vagrant-машине после сбоя установки и удаляю строку LoadModule в файле /etc/apache2/modules-enabled/event.load
, все работает как и ожидалось. Я понятия не имею, почему он загружает MPM событий, так как двойная загрузка MPM вызывает конфликт. Apache не знает, какой MPM загружать, поэтому установка libapache2-mod-php7.0 завершается неудачей.
Также нет выходных данных Puppet, показывающих, что созданы файлы event.conf/event.load, есть только prefork.
Notice: /Stage[main]/Apache::Mod::Prefork/Apache::Mpm[prefork]/File[/etc/apache2/mods-available/prefork.load]/ensure: defined content as '{md5}01b33d643f63126888cf702689f1f66d'
Notice: /Stage[main]/Apache::Mod::Prefork/Apache::Mpm[prefork]/File[/etc/apache2/mods-enabled/prefork.conf]/ensure: created
Notice: /Stage[main]/Apache::Mod::Prefork/Apache::Mpm[prefork]/File[/etc/apache2/mods-enabled/prefork.load]/ensure: created
Я запускаю его на Debian Stretch x64 с последней стабильной версией Vagrant, VirtualBox, Puppet и Apache/2.4.25.
решение1
Для тех, кому интересно, я открыл отчет об ошибке в Jira Puppetlabs, и, как и ожидалось, это оказался реальный баг. Он должен быть исправлен в следующем релизе, когда запрос на извлечение будет выполнен:https://tickets.puppetlabs.com/browse/MODULES-6677
Думаю, это решает эту проблему.