php-formula/php/ng/installed.jinja
2017-09-01 23:59:43 +02:00

89 lines
2.5 KiB
Django/Jinja

# -*- 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 = [] %}
{% 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) %}
{% endif %}
{% endfor %}
{% else %}
{% do pkgs.append(pkginfo) %}
{% 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 %}
{% endif %}
php_install_{{ state }}:
pkg.installed:
- name: {{ state }}
- pkgs: {{ pkgs|json() }}
{% for pkg in specials %}
php_install_{{ state }}_{{ pkg.get('name') }}:
pkg.installed:
{{ sls_block(pkg) }}
{% endfor %}