módulo puppetlabs-apache no centos 6 com php54 scl

Se você viu o post anterior sobre pacotes do repositório SCL, e se você utiliza o Puppet para gerenciar seu apache e php, provavelmente deve estar pensando em como integrar as duas coisas.

O módulo puppetlabs-apache trabalha com o pacote php padrão do CentOS 6, neste caso esse php encontra-se na versão 5.3.3. Manter os dois PHPs no ambiente não é problema, o conflito só vai ocorrer no carregamento do php para uso do apache, o módulo puppetlabs-apache cria os arquivos /etc/httpd/conf.d/php5.conf e /etc/httpd/conf.d/php5.conf que fazem referência ao PHP 5.3.3 em seu sistema, isso vai conflitar com o arquivo php54.conf que o pacote php54-php cria no mesmo diretório.

Para resolver essa questão, a primeira coisa a fazer é a atualização do seu módulo puppetlabs-apache do puppet para versão mais recente, esta versão aceita parametrização nos módulos do apache, com ele poderemos passar como parâmetro o nome do pacote do php e o path para o arquivo .so que desejamos utilizar.

puppet module upgrade puppetlabs-apache

Depois disto remova a linha abaixo na configuração do seu node no puppet

include apache::mod::php

Agora adicione o bloco de código abaixo no lugar acertando corretamente os valores para os atributos package_name e path.

class {'apache::mod::php':
	package_name => "php54-php",
	path         => "/opt/rh/php54/root/usr/lib64/httpd/modules/libphp5.so",
}

Remova qualquer outro arquivo que carregue o php5 no diretório /etc/httpd/conf.d mantendo apenas php5.conf e php5.load que são gerenciados pelo puppet, rode o puppet no node diretamente.

puppet agent -t

Com isso seu puppet continua gerenciando os pacotes do apache e do php e você continua utilizando as versão 5.4 do PHP através do repositório SCL do CentOS.

[s]
Guto