From b3032391dd5dc776f999b034d4e5e30fda1d823c Mon Sep 17 00:00:00 2001 From: Arthur Lutz Date: Tue, 26 Mar 2019 18:31:43 +0100 Subject: [PATCH] feat(php/ng): support the use of a list of php versions Related to #138 --- php/ng/fpm/config.sls | 34 ++++++++++++++++++++++++++++++++++ php/ng/fpm/init.sls | 20 ++++++++++++++++++++ php/ng/fpm/pools_config.sls | 9 ++++++++- php/ng/ini.jinja | 2 +- php/ng/installed.jinja | 16 +++++++++++++++- php/ng/map.jinja | 6 +++++- 6 files changed, 83 insertions(+), 4 deletions(-) diff --git a/php/ng/fpm/config.sls b/php/ng/fpm/config.sls index a91ff89..0129034 100644 --- a/php/ng/fpm/config.sls +++ b/php/ng/fpm/config.sls @@ -11,6 +11,39 @@ {% endif %} {% endfor %} + +{% if salt['pillar.get']('php:ng:version') is iterable %} + {% for version in salt['pillar.get']('php:ng:version') %} + {% set conf_settings = odict(php.lookup.fpm.defaults) %} + {% set first_version = salt['pillar.get']('php:ng:version')[0]|string %} + {% set ini = php.lookup.fpm.ini|replace(first_version, version) %} + {% set conf = php.lookup.fpm.conf|replace(first_version, version) %} + {% set pools = php.lookup.fpm.pools|replace(first_version, version) %} + + {% for key, value in conf_settings.items() %} + {% if value is string %} + {% do conf_settings.update({key: value.replace(first_version, version)}) %} + {% endif %} + {% endfor %} + {% do conf_settings.global.update({'pid': '/var/run/php' + version + '-fpm.pid' }) %} + {% do conf_settings.global.update({'error_log': '/var/log/php' + version + '-fpm.log' }) %} + +php_fpm_ini_config_{{ version }}: + {{ php_ini(ini, php.fpm.config.ini.opts, ini_settings) }} + +php_fpm_conf_config_{{ version }}: + {{ php_ini(conf, php.fpm.config.conf.opts, odict(conf_settings)) }} + +{{ pools }}: + file.directory: + - name: {{ pools }} + - user: {{ php.lookup.fpm.user }} + - group: {{ php.lookup.fpm.group }} + - file_mode: 755 + - make_dirs: True + {% endfor %} +{% else %} + {% set conf_settings = php.lookup.fpm.defaults %} {% do conf_settings.update(php.fpm.config.conf.settings) %} @@ -27,3 +60,4 @@ php_fpm_conf_config: - group: {{ php.lookup.fpm.group }} - file_mode: 755 - make_dirs: True +{% endif %} diff --git a/php/ng/fpm/init.sls b/php/ng/fpm/init.sls index 0087bc3..b7f952b 100644 --- a/php/ng/fpm/init.sls +++ b/php/ng/fpm/init.sls @@ -9,10 +9,29 @@ extend: php_fpm_service: service: - watch: + {% if salt['pillar.get']('php:ng:version') is iterable %} + {% for version in salt['pillar.get']('php:ng:version') %} + - file: php_fpm_ini_config_{{ version }} + - file: php_fpm_conf_config_{{ version }} + {% endfor %} + {% else %} - file: php_fpm_ini_config - file: php_fpm_conf_config + {% endif %} - require: - sls: php.ng.fpm.config + {% if salt['pillar.get']('php:ng:version') is iterable %} + {% for version in salt['pillar.get']('php:ng:version') %} + php_fpm_ini_config_{{ version }}: + file: + - require: + - pkg: php_install_fpm + php_fpm_conf_config_{{ version }}: + file: + - require: + - pkg: php_install_fpm + {% endfor %} + {% else %} php_fpm_ini_config: file: - require: @@ -21,3 +40,4 @@ extend: file: - require: - pkg: php_install_fpm + {% endif %} diff --git a/php/ng/fpm/pools_config.sls b/php/ng/fpm/pools_config.sls index 625f303..a65dfc8 100644 --- a/php/ng/fpm/pools_config.sls +++ b/php/ng/fpm/pools_config.sls @@ -17,7 +17,14 @@ {% do pvalues.update(pool_defaults) %} {% endfor %} {% set state = 'php_fpm_pool_conf_' ~ loop.index0 %} -{% set fpath = path_join(config.get('filename', pool), php.lookup.fpm.pools) %} + +{% if salt['pillar.get']('php:ng:version') is iterable %} + {% set first_fpath = path_join(config.get('filename', pool), php.lookup.fpm.pools) %} + {% set first_version = salt['pillar.get']('php:ng:version')[0]|string %} + {% set fpath = first_fpath.replace(first_version, config.get('phpversion', '7.0')) %} +{% else %} + {% set fpath = path_join(config.get('filename', pool), php.lookup.fpm.pools) %} +{% endif %} {{ state }}: {% if config.enabled %} diff --git a/php/ng/ini.jinja b/php/ng/ini.jinja index 8dfc1fe..d63b960 100644 --- a/php/ng/ini.jinja +++ b/php/ng/ini.jinja @@ -10,5 +10,5 @@ - source: salt://php/ng/files/php.ini - template: jinja - context: - config: {{ serialize(settings) }} + config: {{ serialize(odict(settings)) }} {%- endmacro -%} diff --git a/php/ng/installed.jinja b/php/ng/installed.jinja index 0033d31..808be89 100644 --- a/php/ng/installed.jinja +++ b/php/ng/installed.jinja @@ -16,10 +16,24 @@ {% do specials.append(pkg) %} {% else %} {% do pkgs.append(pkg) %} + {% if salt['pillar.get']('php:ng:version') is iterable %} + {% set first_version = salt['pillar.get']('php:ng:version')[0]|string %} + {% for other_version in salt['pillar.get']('php:ng:version') %} + {% set other_version_str = other_version|string %} + {% do pkgs.append(pkg.replace(first_version, other_version_str)) %} + {% endfor %} + {% endif %} {% endif %} {% endfor %} {% else %} {% do pkgs.append(pkginfo) %} + {% if salt['pillar.get']('php:ng:version') is iterable %} + {% set first_version = salt['pillar.get']('php:ng:version')[0]|string %} + {% for other_version in salt['pillar.get']('php:ng:version') %} + {% set other_version_str = other_version|string %} + {% do pkgs.append(pkginfo.replace(first_version, other_version_str)) %} + {% endfor %} + {% endif %} {% endif %} {% if grains['os_family'] == "Debian" and (state == 'cli' or state == 'fpm' or state == 'php') %} @@ -60,7 +74,7 @@ php_ppa_{{ state }}: - __env__: - LC_ALL: C.UTF-8 - onlyif: - - test ! -e /etc/apt/sources.list.d/ondrej-php.list + - test ! -e /etc/apt/sources.list.d/ondrej-php.list - require_in: - pkg: php_install_{{ state }} pkg.latest: diff --git a/php/ng/map.jinja b/php/ng/map.jinja index fb63de3..36678b6 100644 --- a/php/ng/map.jinja +++ b/php/ng/map.jinja @@ -1,7 +1,11 @@ # -*- coding: utf-8 -*- # vim: ft=jinja -{%- set phpng_version = salt['pillar.get']('php:ng:version', '7.0')|string %} +{%- if salt['pillar.get']('php:ng:version') is iterable %} + {%- set phpng_version = salt['pillar.get']('php:ng:version')[0]|string %} +{% else %} + {%- set phpng_version = salt['pillar.get']('php:ng:version', '7.0')|string %} +{% endif %} {%- set freebsd_phpng_version = phpng_version.replace('.', '') %} {%- if salt['grains.get']('os') == "Ubuntu" %}