wmdeit-cf-wmdelib/php.cf

487 lines
12 KiB
CFEngine3

#
#
#
bundle agent _install_php( version )
{
classes:
"manage_repo";
vars:
freebsd::
"pkgs" slist => {
"php$(version)-ctype",
"php$(version)-curl",
"php$(version)-dom",
"php$(version)-exif",
"php$(version)-fileinfo",
"php$(version)-filter",
"php$(version)-gd",
"php$(version)-gettext",
"php$(version)-iconv",
"php$(version)-intl",
"php$(version)-ldap",
"php$(version)-mbstring",
"php$(version)-mysqli",
"php$(version)-pdo",
"php$(version)-pdo_mysql",
"php$(version)-pdo_pgsql",
"php$(version)-pdo_sqlite",
"php$(version)-pecl-imagick",
"php$(version)-pgsql",
"php$(version)-phar",
"php$(version)-session",
"php$(version)-simplexml",
"php$(version)-sqlite3",
"php$(version)-tokenizer",
"php$(version)-xml",
"php$(version)-zip",
"php$(version)-zlib",
};
debian::
"pkgs" slist => {
"php$(version)-apcu",
"php$(version)-cli",
"php$(version)-common",
"php$(version)-curl",
"php$(version)-gd",
"php$(version)-imagick",
"php$(version)-intl",
"php$(version)-ldap",
"php$(version)-mbstring",
"php$(version)-memcache",
"php$(version)-mysql",
"php$(version)-pgsql",
"php$(version)-redis",
"php$(version)-xml",
"php$(version)-zip",
};
"apt_repo_url" string => "https://packages.sury.org/php/";
"apt_repo_key" string => "https://packages.sury.org/php/apt.gpg";
"apt_repo_key_name" string=> "deb.sury.org-php.gpg";
ubuntu::
"pkgs" slist => {
"php$(version)-apcu",
"php$(version)-common",
"php$(version)-mbstring",
"php$(version)-memcache",
"php$(version)-mysql",
"php$(version)-pgsql",
"php$(version)-redis",
"php$(version)-xml",
"php$(version)-zip",
"php-gd",
"php-geshi",
"php-json",
};
"apt_repo_url" string => "https://ppa.launchpadcontent.net/ondrej/php/ubuntu/";
centos::
"pkgs" slist => {
"php$(version)-cli",
"php$(version)-common",
"php$(version)-gd",
"php$(version)-intl",
"php$(version)-ldap",
"php$(version)-mbstring",
"php$(version)-mysqlnd",
"php$(version)-pecl-imagick-im6",
"php$(version)-pgsql",
"php$(version)-process",
"php$(version)-xml",
"php-pecl-apcu",
"php-pecl-json-post",
"php-pecl-zip",
};
methods:
debian&manage_repo::
"Ensure repo is setup"
usebundle => _install_apt_repo("php","$(apt_repo_url)","$(apt_repo_key)","$(apt_repo_key_name)"),
handle => "php_repo_ready";
ubunut&manage_repo::
"Ensure repo is setup"
usebundle => enable_ppa( "$(apt_repo_url)" ),
handle => "php_repo_ready";
centos::
"Ensure repo is setup"
usebundle => php_install_centos_repos,
handle => "php_repo_ready";
any::
"Ensure php packages are installed"
usebundle => wmde_install_packages(@(pkgs),"php"),
depends_on => {"php_repo_ready"};
}
bundle agent _install_php_fpm( version )
# @brief Install packages required for php-fpm
# @param version Version to install.
{
defaults:
debian::
"version" string => "8.0";
ubuntu::
"version" string => "8.2";
centos::
"version" string => "8.3";
freebsd::
"version" string => "82";
vars:
debian|ubuntu::
"fpm_pkgs" slist => { "php$(version)-fpm" };
"fpm_socket" string => "/run/php/php$(version)-fpm.sock";
"fpm_socket_type" string => "unix:";
"fpm_service_name" string => "php$(version)-fpm";
centos::
"fpm_pkgs" slist => { "php-fpm" };
"fpm_socket" string => "/run/php-fpm/www.sock";
"fpm_socket_type" string => "unix:";
"fpm_service_name" string => "php$(version)-fpm";
freebsd::
"fpm_pkgs" slist => {};
"fpm_socket" string => "127.0.0.1:9000";
"fpm_socket_type" string => "fcgi://";
"fpm_service_name" string => "php-fpm";
methods:
"Ensure the PHP packages are installed"
usebundle => _install_php( $(version) );
"Ensure the PHP-FPM packages are installed"
usebundle => wmde_install_packages( @(fpm_pkgs),"php_fpm" );
"Enable the php-fpm service"
usebundle => wmde_enable_service("$(fpm_service_name)");
"Start or restart the php-fpm service"
usebundle => wmde_service( "$(fpm_service_name)", "php_kept|php_fpm_kept", "php_repaired|php_fpm_repaired" ),
depends_on => { "php_fpm_pkgs_installed", "php_pkgs_installed" };
reports:
# "php ????";
}
bundle agent install_php
{
classes:
"use_ext_repos";
vars:
"version" string => "$(php.version)";
centos::
"version" string => "";
freebsd::
"pkgs" slist => {
"php$(php.bsdvs)-session",
"php$(php.bsdvs)-zip",
"php$(php.bsdvs)-zlib",
"php$(php.bsdvs)-phar",
"php$(php.bsdvs)-pgsql",
"php$(php.bsdvs)-mysqli",
"php$(php.bsdvs)-filter",
"php$(php.bsdvs)-mbstring",
"php$(php.bsdvs)-dom",
"php$(php.bsdvs)-xml",
"php$(php.bsdvs)-simplexml",
"php$(php.bsdvs)-ctype",
"php$(php.bsdvs)-intl",
"php$(php.bsdvs)-curl",
"php$(php.bsdvs)-fileinfo",
"php$(php.bsdvs)-exif",
"php$(php.bsdvs)-iconv",
"php$(php.bsdvs)-ldap",
"php$(php.bsdvs)-gd",
"php$(php.bsdvs)-pecl-imagick",
"php$(php.bsdvs)-pdo",
"php$(php.bsdvs)-pdo_sqlite",
"php$(php.bsdvs)-sqlite3",
"php$(php.bsdvs)-pdo_pgsql",
"php$(php.bsdvs)-pdo_mysql",
"php$(php.bsdvs)-tokenizer",
"php$(php.bsdvs)-gettext"
# "php$(php.bsdvs)-pear-channel-doctrine"
};
# "php$(bsdvs)-json",
debian::
"pkgs" slist => {
"php$(version)-cli",
"php$(version)-common",
"php$(version)-zip",
"php$(version)-pgsql",
"php$(version)-mysql",
"php$(version)-xml",
"php$(version)-gd",
"php$(version)-mbstring",
"php$(version)-intl",
"php$(version)-curl",
"php$(version)-imagick",
"php$(version)-ldap",
"php$(version)-gmp",
# "php$(version)-json"
};
ubuntu::
"pkgs" slist => {
"php$(version)-common",
"php$(version)-zip",
"php$(version)-pgsql",
"php$(version)-mysql",
"php$(version)-xml",
"php$(version)-mbstring",
"php-geshi",
"php-json",
"php-gd",
};
centos::
"xversion" string => "";
"pkgs" slist => {
"php$(xversion)-cli",
"php$(xversion)-common",
"php$(xversion)-pgsql",
"php$(xversion)-mysqlnd",
"php$(xversion)-xml",
"php$(xversion)-gd",
"php$(xversion)-mbstring",
"php$(xversion)-intl",
"php$(xversion)-ldap",
"php$(xversion)-pecl-imagick-im6",
"php-pecl-json-post",
"php-pecl-apcu",
"php-pecl-zip",
"php$(xversion)-process"
};
commands:
# (debian|ubuntu)&php_install_repo::
# "/bin/sh"
# args => "$(sys.workdir)/inputs/$(def.wmde_libdir)/scripts/install-php-sury.sh",
# handle => "php_repo_ready";
# (debian|ubuntu)&(!php_install_repo)::
# "/usr/bin/true"
# inform => "false",
# handle => "php_repo_ready";
# !(debian|ubuntu)::
methods:
debian&use_ext_repos::
"any" usebundle => install_apt_repo("php","$(php.apt_repo_url)","$(php.apt_repo_key)","$(php.apt_repo_key_name)"),
handle => "php_repo_ready";
centos::
"any" usebundle => php_install_centos_repos,
handle => "php_repo_ready";
any::
"any" usebundle => wmde_install_packages(@(pkgs),"php"),
depends_on => {"php_repo_ready"};
commands:
freebsd::
"/usr/bin/true"
inform => "false",
handle => "php_repo_ready";
}
bundle agent php_install_centos_repos
{
classes:
centos::
"switch_repo" expression => not(returnszero("cat /etc/dnf/modules.d/php.module 2>/dev/null | grep -q '^stream.*=.*remi-$(php.version)'","useshell"));
"install_remi" expression => not(returnszero("rpm -q remi-release > /dev/null","useshell"));
"install_epel" expression => not(returnszero("rpm -q epel-release > /dev/null","useshell"));
commands:
centos&install_epel::
"/usr/bin/yum"
args => "install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(sys.os_version_major).noarch.rpm",
handle => "php_epel_repo_installed";
centos&(!install_epel)::
"/usr/bin/true"
inform => "false",
handle => "php_epel_repo_installed";
centos&install_remi::
"/usr/bin/yum"
args => "install -y https://rpms.remirepo.net/enterprise/remi-release-$(sys.os_version_major).rpm",
depends_on => {"php_epel_repo_installed"},
handle => "php_remi_repo_installed";
centos&(!install_remi)::
"/usr/bin/true"
inform => "false",
handle => "php_remi_repo_installed";
centos&switch_repo::
"dnf" args => "module switch-to php:remi-$(php.version) -y",
contain => wmde_cmd_useshell,
depends_on => {"php_remi_repo_installed"};
methods:
}
bundle agent php( requested_version, settings )
{
classes:
"rv_exists" expression => isvariable( "requested_version" ), scope => "bundle";
vars:
"ini_files" slist => { };
"version" string => ifelse(
"debian.!ubuntu", "8.0",
"ubuntu", "8.2",
"centos", "8.3",
"freebsd", "82",
"");
rv_exists::
"version" string => "$(requested_version)";
debian::
"ini_files" slist => {
# "/etc/php/$(php.version)/apache2/php.ini",
# "/etc/php/$(php.version)/fpm/php.ini"
"/etc/php/$(php.version)/fpm/conf.d/50-wmde.ini",
"/etc/php/$(php.version)/cli/conf.d/50-wmde.ini"
};
"settings_index"
slist => getindices( "settings" ),
handle => "settings_indexed";
"cli_exe" string => "/usr/bin/php";
"fpm_pkgs" slist => { "php$(version)-fpm" };
"fpm_service_name" string => "php$(version)-fpm";
"fpm_socket" string => "/run/php/php$(version)-fpm.sock";
"fpm_socket_type" string => "unix:";
"apt_repo_url" string => "https://packages.sury.org/php/";
"apt_repo_key" string => "https://packages.sury.org/php/apt.gpg";
"apt_repo_key_name" string=> "deb.sury.org-php.gpg";
"apache_m" string => "php";
"apache_f" string => "libphp$(php.version)";
ubuntu::
"apt_repo_url" string => "https://ppa.launchpadcontent.net/ondrej/php/ubuntu/";
"apt_repo_key" string => "";
"apt_repo_key_name" string=> "";
freebsd::
"ini_files" slist => {
# "/etc/php/$(install_php.version)/apache2/php.ini",
# "/etc/php/$(install_php.version)/fpm/php.ini"
};
"cli_exe" string => "/usr/local/bin/php";
"bsdvs" string => string_replace( "$(version)", ".", "");
"apache_m" string => "php";
"apache_f" string => "libphp";
"fpm_pkgs" slist => {};
"fpm_service_name" string => "php-fpm";
"fpm_socket" string => "127.0.0.1:9000";
"fpm_socket_type" string => "fcgi://";
centos::
"cli_exe" string => "/usr/bin/php";
"version" string => "8.1";
"fpm_pkgs" slist => { "php-fpm" };
"fpm_service_name" string => "php$(version)-fpm";
"fpm_socket" string => "/run/php-fpm/www.sock";
"fpm_socket_type" string => "unix:";
files:
debian::
"$(ini_files)"
link_from => ln_s("/etc/php/$(php.version)/mods-available/wmde_custom_settings.ini");
"/etc/php/$(php.version)/mods-available/wmde_custom_settings.ini"
edit_template => "$(sys.workdir)/inputs/$(def.wmde_libdir)/templates/php_confd.ini.mustache",
template_method => "mustache",
template_data => @(settings),
perms => m("644"),
classes => if_repaired(php_repaired); # TODO: bislang kein Reload des FPM-Dienstes nach Änderung
# methods:
# "any" usebundle => install_php;
# reports:
# "PHP VERSION: $(ini_files) V:$(install_php.version)";
}
bundle agent install_php_fpm
{
vars:
"service_deps" slist => {
"php_fpm_pkgs_installed",
"php_pkgs_installed"
};
freebsd::
"service_deps" slist => {
"php_pkgs_installed"
};
"service_name" string => "$(php.fpm_service_name)";
"service_cfg_name" string => "php_fpm";
methods:
"any" usebundle => install_php;
"any" usebundle => wmde_install_packages(@(php.fpm_pkgs),"php_fpm");
"any" usebundle => wmde_enable_service("$(this.bundle)");
"any"
usebundle => wmde_service("$(php.fpm_service_name)","php_kept|php_fpm_kept","php_repaired|php_fpm_repaired"),
depends_on => @(service_deps);
reports:
# "php ????";
}
bundle agent php_composer(cfg)
{
vars:
"installer" string => "$(sys.workdir)/data/php/composer-setup.php";
"exe" string => "/usr/local/bin/composer";
classes:
"php_composer_install" expression => not(fileexists("$(exe)"));
vars:
files:
"$(sys.workdir)/data/php/."
create => "true",
handle => "php_dir_created";
commands:
php_composer_install::
"$(wget.exe) -q -O $(installer) https://getcomposer.org/installer"
handle => "php_composer_installer_downloaded",
depends_on => {"php_dir_created"};
"export HOME=/root && $(php.cli_exe) $(installer) --install-dir=/usr/local/bin --filename=composer"
handle => "php_composer_installed",
contain => wmde_cmd_useshell,
depends_on => {"php_composer_installer_downloaded"};
methods:
"any" usebundle => install_php;
"any" usebundle => install_wget;
}