# -*- coding: utf-8 -*- # vim: ft=jinja {# Template for installing packages #} {% from "php/ng/map.jinja" import php with context %} {% from "php/ng/macro.jinja" import sls_block %} {% set pkginfo = php.lookup.pkgs.get(state) %} {% set pkgs = [] %} {% set specials = [] %} {% set pillar_php_ng_version = salt['pillar.get']('php:ng:version', '7.0') %} {% if pkginfo is iterable and pkginfo is not string %} {% for pkg in pkginfo %} {% if pkg is mapping %} {% do specials.append(pkg) %} {% else %} {% do pkgs.append(pkg) %} {% if pillar_php_ng_version is iterable and pillar_php_ng_version is not string %} {% set first_version = pillar_php_ng_version[0]|string %} {% for other_version in pillar_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 pillar_php_ng_version is iterable and pillar_php_ng_version is not string %} {% set first_version = pillar_php_ng_version[0]|string %} {% for other_version in pillar_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') %} {% set use_external_repo = salt['pillar.get']('php:use_external_repo', False) %} {% if use_external_repo %} {% if grains['os'] == 'Ubuntu' %} {% set external_repo_name = salt['pillar.get']('php:external_repo_name', 'ondrej/php') %} php_ppa_{{ state }}: pkgrepo.managed: - ppa: {{ external_repo_name }} - __env__: - LC_ALL: C.UTF-8 - onlyif: - test ! -e /etc/apt/sources.list.d/ondrej-ubuntu-php-{{ grains['oscodename'] }}.list {# Trusty and Xenial use different naming schemas #} - test ! -e /etc/apt/sources.list.d/ondrej-php-{{ grains['oscodename'] }}.list {# Trusty and Xenial use different naming schemas #} - require_in: - pkg: php_install_{{ state }} pkg.latest: - name: {{ state }} - pkgs: {{ pkgs|json() }} - refresh: True - onchanges: - pkgrepo: php_ppa_{{ state }} {% else %} {% set external_repo_name = salt['pillar.get']('php:external_repo_name', 'packages.sury.org/php' ) %} php_repo_{{ state }}: pkg.installed: - name: apt-transport-https php_ppa_{{ state }}: pkgrepo.managed: - humanname: {{ external_repo_name }} - name: deb https://packages.sury.org/php/ {{ grains['oscodename'] }} main - file: /etc/apt/sources.list.d/ondrej-php.list - key_url: https://packages.sury.org/php/apt.gpg - __env__: - LC_ALL: C.UTF-8 - onlyif: - test ! -e /etc/apt/sources.list.d/ondrej-php.list - require_in: - pkg: php_install_{{ state }} pkg.latest: - name: {{ state }} - pkgs: {{ pkgs|json() }} - refresh: True - onchanges: - pkgrepo: php_ppa_{{ state }} {% endif %} {% endif %} {% elif grains['os_family'] == "RedHat" and (state == 'cli' or state == 'fpm' or state == 'php') %} {% set use_scl_repo = salt['pillar.get']('php:use_scl_repo', False) %} {% set scl_php_version = salt['pillar.get']('php:scl_php_version', 71) %} {% set enable_php_repo = salt['pillar.get']('php:ng:lookup:enable_php_repo', False) %} {% if use_scl_repo and grains['os'] == 'CentOS' %} php_centos_scl_enable_{{ state }}: pkg.installed: - name: centos-release-scl {% elif use_scl_repo and grains['os'] == 'RedHat' %} php_redhat_scl_enable_{{ state }}: cmd.run: - name: yum-config-manager --enable rhel-server-rhscl-{{ grains['osmajorrelease'] }}-rpms {% endif %} {% endif %} php_install_{{ state }}: pkg.installed: - name: {{ state }} - pkgs: {{ pkgs|json() }} {% if enable_php_repo is defined and enable_php_repo %} - enablerepo: {{ enable_php_repo }} {% endif %} {% for pkg in specials %} php_install_{{ state }}_{{ pkg.get('name') | replace("/", "-") }}: pkg.installed: {{ sls_block(pkg) }} {% endfor %}