|
- # -*- 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 %}
|