Vagrant と Puppetlabs/apache で 2 つの MPM を設定する

Vagrant と Puppetlabs/apache で 2 つの MPM を設定する

現在、Vagrant マシンを Puppet モジュールで PHP7 にアップデートしようとしています。もちろん、モジュールもアップデートされています。しかし、puppetlabs/apache モジュールをバージョン 3.0.0 にアップデートしてから、インストールしようとすると失敗しますlibapache2-mod-php7.0

原因はすでに突き止めています。何らかの理由で、puppetlabs/apache モジュールは、クラス::apache::mod::phpが呼び出されるときに 2 つの MPM を設定しています。両方のイベントを prefork MPM として設定します。prefork が設定されている理由は、PHP を使用するときに Puppet モジュールで prefork または itk モジュールのいずれかをロードする必要があるためです。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 が必須であるというエラーが発生します。mpm_module::apache::mod::prefork設定を削除して prefork に設定すると、現在の構成と同じことが起こります。

インストールが失敗した後に Vagrant マシンに ssh で接続し、ファイル内の LoadModule 行を削除すると/etc/apache2/modules-enabled/event.load、すべてが期待どおりに動作します。二重 MPM ロードが競合を引き起こしているため、イベント MPM がロードされる理由がわかりません。Apache はどの MPM をロードすればよいか分からないため、libapache2-mod-php7.0 のインストールに失敗します。

また、event.conf/event.load ファイルが作成されたことを示す Puppet の出力はなく、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

私は、Vagrant、VirtualBox、Puppet、Apache/2.4.25 の最新の安定リリースを搭載した Debian Stretch x64 でこれを実行しています。

答え1

興味がある方のために、私は Puppetlabs の Jira でバグレポートを開きましたが、予想通り実際のバグであることが判明しました。プルリクエストが通れば、次のリリースで修正されるはずです。https://tickets.puppetlabs.com/browse/MODULES-6677

これでこの問題は解決すると思います。

関連情報