--- /dev/null
+class php::dpa {
+ file { '/etc/apt/trusted.gpg.d/deb.sury.org-php.gpg':
+ ensure => present,
+ owner => "root",
+ group => "root",
+ mode => "0644",
+ source => 'puppet:///modules/php/deb.sury.org.gpg',
+ }
+
+ file { '/etc/apt/sources.list.d/php.list':
+ ensure => present,
+ owner => "root",
+ group => "root",
+ mode => "0644",
+ content => "deb https://packages.sury.org/php/ ${::lsbdistcodename} main\n",
+ require => File['/etc/apt/trusted.gpg.d/deb.sury.org-php.gpg'],
+ notify => Exec['php-apt-auto-update'],
+ }
+
+ exec { 'php-apt-auto-update':
+ command => "/usr/bin/apt-get update",
+ user => "root",
+ refreshonly => true,
+ }
+}
--- /dev/null
+class php::fpm(
+ $ensure = 'present',
+) {
+ $series = $::php::series
+
+ if $series == '5' {
+ $version = $::php::series5::version
+ }
+ else {
+ $version = $::php::series7::version
+ }
+
+ package { 'php-fpm':
+ ensure => $ensure,
+ }
+
+ service { "php${version}-fpm":
+ ensure => $ensure ? {
+ 'present' => running,
+ default => stopped,
+ },
+ require => Package['php-fpm'],
+ }
+
+ apache::module { [ "proxy_fcgi", "setenvif" ]:
+ ensure => $ensure,
+ require => Package["apache"],
+ }
+}
--- /dev/null
+define php::fpm::pool(
+ $source,
+ $ensure = 'present',
+) {
+ $series = $::php::series
+
+ if $series == '5' {
+ $version = $::php::series5::version
+ $folder = $::php::series5::folder
+ }
+ else {
+ $version = $::php::series7::version
+ $folder = $::php::series7::folder
+ }
+
+ file { "/etc/php/${version}/fpm/pool.d/${name}":
+ ensure => $ensure,
+ source => $source,
+ require => Package['php-fpm'],
+ notify => Service["php-${version}-fpm"],
+ }
+}
class php(
$series = '5',
$hardened = true,
+ $apc = absent,
+ $fpm = absent,
){
class { "php::series${series}":
hardened => $hardened,
}
+
+ package { [ 'php-apcu', 'php-apcu-bc' ]:
+ ensure => $apc,
+ }
+
+ class php::fpm {
+ ensure => $fpm,
+ }
}
--- /dev/null
+class php::ppa {
+ #package { 'python-software-properties':
+ # ensure => present,
+ #}
+
+ # This required alternative checking of repository key!
+ #exec { 'add-apt-repository-ondrej-php':
+ # command => '/usr/bin/add-apt-repository -y ppa:ondrej/php && apt-get update',
+ # user => 'root',
+ # creates => '/etc/apt/sources.list.d/ondrej-ubuntu-php-xenial.list',
+ # require => Package['python-software-properties'],
+ #}
+
+ file { '/etc/apt/trusted.gpg.d/ondrej_ubuntu_php.gpg':
+ ensure => present,
+ owner => "root",
+ group => "root",
+ mode => "0644",
+ source => 'puppet:///modules/php/ondrej_ubuntu_php.gpg',
+ }
+
+ file { '/etc/apt/sources.list.d/php.list':
+ ensure => present,
+ owner => "root",
+ group => "root",
+ mode => "0644",
+ content => "deb http://ppa.launchpad.net/ondrej/php/ubuntu ${::lsbdistcodename} main\n",
+ require => File['/etc/apt/trusted.gpg.d/ondrej_ubuntu_php.gpg'],
+ notify => Exec['php-apt-auto-update'],
+ }
+
+ exec { 'php-apt-auto-update':
+ command => "/usr/bin/apt-get update",
+ user => "root",
+ refreshonly => true,
+ }
+}
class php::resources {
$configs = hiera('php::config', {})
+ $pools = hiera('php::pool', {})
# Apply instances
- create_resources('php::config', $configs)
+ create_resources('php::config', $configs)
+ create_resources('php::fpm::pool', $pools)
}
-class php::series5($hardened = true) {
+class php::series5(
+ $hardened = true
+) {
case $::lsbdistcodename {
'xenial': {
- include php::series5::packages::ppa
+ include php::ppa
}
'stretch': {
- include php::series5::packages::dpa
- }
- default: {
- include php::series5::packages::default
+ include php::dpa
}
}
+ $version = $::lsbdistcodename ? {
+ 'xenial' => '5.6',
+ 'stretch' => '5.6',
+ default => '5',
+ }
+
$folder = $::lsbdistcodename ? {
- 'xenial' => '/etc/php/5.6',
- 'stretch' => '/etc/php/5.6',
+ 'xenial' => "/etc/php/${version}",
+ 'stretch' => "/etc/php/${version}",
default => '/etc/php5',
}
# require => [ Package['php5'], File["${folder}/apache2"] ],
#}
+ include php::series5::packages
include php::resources
include php::series5::defaults
-class php::series5::packages::dpa {
- file { '/etc/apt/trusted.gpg.d/deb.sury.org-php.gpg':
- ensure => present,
- owner => "root",
- group => "root",
- mode => "0644",
- source => 'puppet:///modules/php/deb.sury.org.gpg',
- }
-
- file { '/etc/apt/sources.list.d/php.list':
- ensure => present,
- owner => "root",
- group => "root",
- mode => "0644",
- content => "deb https://packages.sury.org/php/ ${::lsbdistcodename} main\n",
- require => File['/etc/apt/trusted.gpg.d/deb.sury.org-php.gpg'],
- notify => Exec['php-apt-auto-update'],
- }
-
- exec { 'php-apt-auto-update':
- command => "/usr/bin/apt-get update",
- user => "root",
- refreshonly => true,
- }
-
+class php::series5::packages {
# The needed packages: we could also try libapache2-mod-php5.6filter
package { 'php5':
name => 'php5.6',
+++ /dev/null
-class php::series5::packages::default {
- # The needed packages: we could also try libapache2-mod-php5filter
- package { [ 'php5', 'php5-mysql', 'php5-sqlite', 'php5-cli', 'php5-curl', 'php5-gmp', 'libapache2-mod-php5' ]:
- ensure => installed,
- }
-
- # Optional packages
- package { [ "php5-gd", "php5-imagick" ]:
- ensure => installed,
- }
-
- # Not available anymore
- package { 'php5-suhosin':
- ensure => absent,
- }
-}
+++ /dev/null
-class php::series5::packages::ppa {
- #package { 'python-software-properties':
- # ensure => present,
- #}
-
- # This required alternative checking of repository key!
- #exec { 'add-apt-repository-ondrej-php':
- # command => '/usr/bin/add-apt-repository -y ppa:ondrej/php && apt-get update',
- # user => 'root',
- # creates => '/etc/apt/sources.list.d/ondrej-ubuntu-php-xenial.list',
- # require => Package['python-software-properties'],
- #}
-
- file { '/etc/apt/trusted.gpg.d/ondrej_ubuntu_php.gpg':
- ensure => present,
- owner => "root",
- group => "root",
- mode => "0644",
- source => 'puppet:///modules/php/ondrej_ubuntu_php.gpg',
- }
-
- file { '/etc/apt/sources.list.d/php.list':
- ensure => present,
- owner => "root",
- group => "root",
- mode => "0644",
- content => "deb http://ppa.launchpad.net/ondrej/php/ubuntu ${::lsbdistcodename} main\n",
- require => File['/etc/apt/trusted.gpg.d/ondrej_ubuntu_php.gpg'],
- notify => Exec['php-apt-auto-update'],
- }
-
- exec { 'php-apt-auto-update':
- command => "/usr/bin/apt-get update",
- user => "root",
- refreshonly => true,
- }
-
- # The needed packages: we could also try libapache2-mod-php5.6filter
- package { 'php5':
- name => 'php5.6',
- #require => Exec['add-apt-repository-ondrej-php'],
- }
-
- package { 'php5-cli':
- name => 'php5.6-cli',
- #require => Exec['add-apt-repository-ondrej-php'],
- }
-
- package { [ 'php5.6-mysql', 'php5.6-sqlite3', 'php5.6-curl', 'php5.6-gmp', 'libapache2-mod-php5.6' ]:
- ensure => installed,
- #require => Exec['add-apt-repository-ondrej-php'],
- }
-
- # Optional packages
- package { [ "php5.6-gd", "php-imagick", "php5.6-xml", "php5.6-mbstring" ]:
- ensure => installed,
- #require => Exec['add-apt-repository-ondrej-php'],
- }
-
- # Not available anymore
- package { 'php5.6-suhosin':
- ensure => absent,
- #require => Exec['add-apt-repository-ondrej-php'],
- }
-
- # The old module
- apache::module { 'php5':
- ensure => absent,
- }
-
- # The needed apache modules
- apache::module { 'php5.6':
- ensure => present,
- require => [ Package['libapache2-mod-php5.6'], Apache::Module['php5'] ],
- }
-
- # Default alternative
- file { "/etc/alternatives/php":
- ensure => "/usr/bin/php5.6",
- owner => root,
- group => root,
- require => Package['php5'],
- }
-}
-class php::series7($hardened = true) {
- $folder = '/etc/php/7.0'
-
- package { [ 'php', 'php-mysql', 'php-sqlite3', 'php-cli', 'php-curl', 'php-gmp', 'libapache2-mod-php7.0' ]:
- ensure => installed,
+class php::series7(
+ $hardened = true
+) {
+ case $::lsbdistcodename {
+ 'xenial': {
+ include php::ppa
+ }
+ 'stretch': {
+ include php::dpa
+ }
}
- # Optional packages
- package { [ "php-gd", "php-imagick" ]:
- ensure => installed,
+ $version = '7.2'
+ $folder = "/etc/php/${version}"
+
+ include php::packages
+ include php::resources
+ include php::series7::defaults
+
+ if $hardened == true {
+ include php::series7::hardened
}
# The needed apache modules
#apache::module { 'php':
# ensure => present,
- # require => Package['libapache2-mod-php7.0'],
+ # require => Package["libapache2-mod-php${version}"],
#}
file { [ "${folder}", "${folder}/cli", "${folder}/apache2", "${folder}/cli/conf.d", "${folder}/apache2/conf.d" ]:
mode => '0755',
require => Package['php'],
}
-
- include php::resources
- include php::series7::defaults
-
- if $hardened == true {
- include php::series7::hardened
- }
}
--- /dev/null
+class php::series7::packages {
+ $version = $::php::series7::version
+
+ package { [ 'php', 'php-mysql', 'php-sqlite3', 'php-cli', 'php-curl', 'php-gmp', "libapache2-mod-php${version}" ]:
+ ensure => installed,
+ }
+
+ # Optional packages
+ package { [ "php-gd", "php-imagick" ]:
+ ensure => installed,
+ }
+}