Initial commit
This commit is contained in:
85
manifests/app.pp
Normal file
85
manifests/app.pp
Normal file
@@ -0,0 +1,85 @@
|
||||
# modules/frankenphp/manifests/app.pp
|
||||
|
||||
define frankenphp::app (
|
||||
Stdlib::Absolutepath $root_dir,
|
||||
String $user,
|
||||
String $listen_port,
|
||||
String $group = $user,
|
||||
Stdlib::Absolutepath $docs_root = '/var/www',
|
||||
String $app_caddyfile_dir = '/etc/frankenphp/sites.d',
|
||||
String $supervisor_conf_dir = '/etc/supervisor/conf.d',
|
||||
Boolean $managed_root_dir = true,
|
||||
Enum['present', 'absent'] $ensure = 'present',
|
||||
) {
|
||||
|
||||
$app_name = $title
|
||||
$app_caddyfile = "${app_caddyfile_dir}/${app_name}.Caddyfile"
|
||||
$supervisor_conf = "${supervisor_conf_dir}/frankenphp-${app_name}.conf"
|
||||
|
||||
exec { "refresh-frankenphp-${app_name}":
|
||||
command => "supervisorctl restart frankenphp-${app_name}",
|
||||
path => ['/usr/bin', '/bin'],
|
||||
refreshonly => true,
|
||||
}
|
||||
|
||||
if $ensure == 'present' {
|
||||
# Users
|
||||
ensure_resource('group', $group, { ensure => 'present' })
|
||||
ensure_resource('user', $user, {
|
||||
ensure => 'present',
|
||||
gid => $group,
|
||||
shell => '/bin/false',
|
||||
home => "${docs_root}/${user}",
|
||||
system => true,
|
||||
require => Group[$group],
|
||||
})
|
||||
|
||||
# Directories
|
||||
ensure_resource('file', $app_caddyfile_dir, { ensure => 'directory' })
|
||||
if ! $managed_root_dir {
|
||||
ensure_resource('file', $root_dir, {
|
||||
ensure => 'directory',
|
||||
owner => $user,
|
||||
group => $group,
|
||||
mode => '0755',
|
||||
require => User[$user],
|
||||
})
|
||||
}
|
||||
|
||||
# Caddyfile
|
||||
$caddy_content = epp('frankenphp/app_caddyfile.epp', {
|
||||
listen_port => $listen_port,
|
||||
root_dir => $root_dir,
|
||||
})
|
||||
|
||||
file { $app_caddyfile:
|
||||
ensure => 'file',
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => '0644',
|
||||
content => $caddy_content,
|
||||
notify => Exec["refresh-frankenphp-${app_name}"],
|
||||
}
|
||||
|
||||
# Supervisor
|
||||
supervisord::program { "frankenphp-${app_name}":
|
||||
command => "/usr/bin/frankenphp run --config ${app_caddyfile}",
|
||||
priority => '100',
|
||||
user => $user,
|
||||
autorestart => true,
|
||||
autostart => true,
|
||||
startretries => 20,
|
||||
program_environment => {
|
||||
'PATH' => '/bin:/sbin:/usr/bin:/usr/sbin',
|
||||
},
|
||||
require => File[$app_caddyfile]
|
||||
}
|
||||
|
||||
} else {
|
||||
file { $app_caddyfile: ensure => 'absent' }
|
||||
file { $supervisor_conf:
|
||||
ensure => 'absent',
|
||||
notify => Service['supervisor'],
|
||||
}
|
||||
}
|
||||
}
|
||||
36
manifests/config.pp
Normal file
36
manifests/config.pp
Normal file
@@ -0,0 +1,36 @@
|
||||
# modules/frankenphp/manifests/config.pp
|
||||
|
||||
class frankenphp::config (
|
||||
$caddyfile_path = $frankenphp::params::caddyfile_path,
|
||||
$service_name = $frankenphp::params::service_name,
|
||||
) inherits frankenphp::params {
|
||||
|
||||
$caddyfile_dir = dirname($caddyfile_path)
|
||||
ensure_resource('file', $caddyfile_dir, {
|
||||
ensure => 'directory',
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => '0755',
|
||||
})
|
||||
|
||||
concat { $caddyfile_path:
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => '0644',
|
||||
notify => Service[$service_name],
|
||||
require => File[$caddyfile_dir],
|
||||
}
|
||||
|
||||
concat::fragment { 'caddyfile-global-options':
|
||||
target => $caddyfile_path,
|
||||
order => '01',
|
||||
content => @(EOT)
|
||||
# Options globales Caddy (email, etc.)
|
||||
# {
|
||||
# admin off
|
||||
# email admin@example.com
|
||||
# }
|
||||
|
||||
EOT
|
||||
}
|
||||
}
|
||||
18
manifests/init.pp
Normal file
18
manifests/init.pp
Normal file
@@ -0,0 +1,18 @@
|
||||
# modules/frankenphp/manifests/init.pp
|
||||
|
||||
class frankenphp (
|
||||
String $version = $frankenphp::params::version,
|
||||
String $service_ensure = 'running',
|
||||
Boolean $service_enable = true,
|
||||
) inherits frankenphp::params {
|
||||
|
||||
require supervisord
|
||||
|
||||
contain 'frankenphp::install'
|
||||
contain 'frankenphp::config'
|
||||
contain 'frankenphp::service'
|
||||
|
||||
Class['frankenphp::install'] ->
|
||||
Class['frankenphp::config'] ~>
|
||||
Class['frankenphp::service']
|
||||
}
|
||||
36
manifests/install.pp
Normal file
36
manifests/install.pp
Normal file
@@ -0,0 +1,36 @@
|
||||
# modules/frankenphp/manifests/install.pp
|
||||
|
||||
class frankenphp::install (
|
||||
$version = $frankenphp::params::version,
|
||||
$package_name = $frankenphp::params::package_name,
|
||||
$download_url = $frankenphp::params::download_url,
|
||||
$local_deb_path = $frankenphp::params::local_deb_path,
|
||||
) inherits frankenphp::params {
|
||||
|
||||
if ! defined(Package['wget']) {
|
||||
package { 'wget':
|
||||
ensure => installed,
|
||||
}
|
||||
}
|
||||
|
||||
exec { "download-frankenphp-${version}":
|
||||
command => "/usr/bin/wget -q '${download_url}' -O '${local_deb_path}'",
|
||||
creates => $local_deb_path,
|
||||
path => ['/usr/bin', '/bin'],
|
||||
require => Package['wget'],
|
||||
}
|
||||
|
||||
package { $package_name:
|
||||
ensure => 'installed',
|
||||
provider => 'dpkg',
|
||||
source => $local_deb_path,
|
||||
require => Exec["download-frankenphp-${version}"],
|
||||
notify => Exec["cleanup-frankenphp-deb-${version}"],
|
||||
}
|
||||
|
||||
exec { "cleanup-frankenphp-deb-${version}":
|
||||
command => "/bin/rm -f '${local_deb_path}'",
|
||||
path => ['/bin'],
|
||||
refreshonly => true,
|
||||
}
|
||||
}
|
||||
14
manifests/params.pp
Normal file
14
manifests/params.pp
Normal file
@@ -0,0 +1,14 @@
|
||||
# modules/frankenphp/manifests/params.pp
|
||||
|
||||
class frankenphp::params {
|
||||
$version = '1.9.1'
|
||||
$package_name = 'frankenphp'
|
||||
$service_name = 'frankenphp'
|
||||
$caddyfile_path = '/etc/frankenphp/Caddyfile'
|
||||
$download_dir = '/tmp'
|
||||
$arch = $facts['architecture']
|
||||
$deb_filename = "frankenphp_${version}-1_${arch}.deb"
|
||||
$local_deb_path = "${download_dir}/${deb_filename}"
|
||||
$download_base_url = 'https://github.com/php/frankenphp/releases/download'
|
||||
$download_url = "${download_base_url}/v${version}/${deb_filename}"
|
||||
}
|
||||
15
manifests/service.pp
Normal file
15
manifests/service.pp
Normal file
@@ -0,0 +1,15 @@
|
||||
# modules/frankenphp/manifests/service.pp
|
||||
|
||||
class frankenphp::service (
|
||||
$service_name = $frankenphp::params::service_name,
|
||||
$package_name = $frankenphp::params::package_name,
|
||||
$service_ensure = 'running',
|
||||
$service_enable = true,
|
||||
) inherits frankenphp::params {
|
||||
|
||||
service { $service_name:
|
||||
ensure => $service_ensure,
|
||||
enable => $service_enable,
|
||||
subscribe => Package[$package_name],
|
||||
}
|
||||
}
|
||||
40
manifests/vhost.pp
Normal file
40
manifests/vhost.pp
Normal file
@@ -0,0 +1,40 @@
|
||||
# modules/frankenphp/manifests/vhost.pp
|
||||
|
||||
define frankenphp::vhost (
|
||||
String $server_name,
|
||||
Stdlib::Absolutepath $root_dir = '/var/www/default',
|
||||
Optional[String] $proxy_target = undef,
|
||||
Optional[String] $fpm_socket = undef,
|
||||
Enum['php_server', 'proxy', 'fastcgi'] $mode = 'php_server',
|
||||
String $extra_config = '',
|
||||
Enum['present', 'absent'] $ensure = 'present',
|
||||
String $order = '10',
|
||||
) {
|
||||
|
||||
$caddyfile_path = $frankenphp::params::caddyfile_path
|
||||
|
||||
# Valider que les bons paramètres sont passés
|
||||
# if $mode == 'php_server' and $root_dir == '/var/www/default' {
|
||||
# }
|
||||
if $mode == 'proxy' and !$proxy_target {
|
||||
fail('Le mode proxy nécessite un $proxy_target (ex: "localhost:9001")')
|
||||
}
|
||||
if $mode == 'fastcgi' and !$fpm_socket {
|
||||
fail('Le mode fastcgi nécessite un $fpm_socket (ex: "unix//run/php/php.sock")')
|
||||
}
|
||||
|
||||
$vhost_content = epp('frankenphp/vhost.epp', {
|
||||
server_name => $server_name,
|
||||
root_dir => $root_dir,
|
||||
mode => $mode,
|
||||
proxy_target => $proxy_target,
|
||||
fpm_socket => $fpm_socket,
|
||||
extra_config => $extra_config,
|
||||
})
|
||||
|
||||
concat::fragment { "caddyfile-vhost-${server_name}":
|
||||
target => $caddyfile_path,
|
||||
order => $order,
|
||||
content => $vhost_content,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user