---

- name: Install and manage PHP environment
  collections: [ 'debops.debops', 'debops.roles01',
                 'debops.roles02', 'debops.roles03' ]
  hosts: [ 'debian10' ]
  become: True

  environment: '{{ inventory__environment | d({})
                   | combine(inventory__group_environment | d({}))
                   | combine(inventory__host_environment  | d({})) }}'


  vars:
    php__sury_apt_key_id: '{{ php__sury_apt_key_id_map[ansible_distribution] }}'
    php__sury_apt_repo: '{{ php__sury_apt_repo_map[ansible_distribution] }}'
    php__sury_apt_key_id_map:
      'Debian':
        - id: '1505 8500 A023 5D97 F5D1  0063 B188 E2B6 95BD 4743'
          repo: 'deb https://packages.sury.org/php/ {{ ansible_distribution_release }} main'
          state: '{{ "present" if php__sury|bool else "absent" }}'

        # Key replaced due to security concerns
        # Ref: https://www.patreon.com/posts/dpa-new-signing-25451165
        - id: 'DF3D 585D B8F0 EB65 8690  A554 AC0E 4758 4A7A 714D'
          state: 'absent'
    php__sury_apt_repo_map:
      'Debian': 'deb https://packages.sury.org/php/ {{ ansible_distribution_release }} main'
      'Ubuntu': 'ppa:ondrej/php'
    php__base_packages:
      - unzip
      - git
    # mysql - это нужно только для WordPress
    # mbstring требует только некоторые пакеты в laravel
    # bcmath - нужно для работы парсера Excel файлов на одном из проектов
    # Laravel/OctoberCMS: intl, redis
    php__composer_upstream_enabled: '{{ True
                                        if (ansible_distribution_release in
                                            [ "buster" ])
                                        else False }}'
    php__php_included_packages: '{{ php__common_included_packages
                                    + [ "sysvsem", "sysvshm" ] }}'

    php__fpm_pm: static
    php__fpm_pm_max_children: 26
    php__pools:
      - name: backend
        user: www-data
        group: www-data
        php_admin_values:
          memory_limit: 256M
          post_max_size: 800M
          upload_max_filesize: 200M
          max_execution_time: 600
        pm: static
        pm_max_children: 3

  vars_files:
    - ./../../vars/php.yml

  pre_tasks:

    - name: Apply keyring configuration for php environment
      import_role:
        name: 'keyring'
      vars:
        keyring__dependent_apt_keys:
          - '{{ php__keyring__dependent_apt_keys }}'
      tags: [ 'role::keyring', 'skip::keyring', 'role::php' ]

    - name: Prepare php environment
      import_role:
        name: 'php'
        tasks_from: 'main_env'
      tags: [ 'role::php', 'role::php:env', 'role::logrotate' ]

  roles:

    - role: apt_preferences
      tags: [ 'role::apt_preferences', 'skip::apt_preferences' ]
      apt_preferences__dependent_list:
        - '{{ php__apt_preferences__dependent_list }}'

    - role: cron
      tags: [ 'role::cron', 'skip::cron' ]

    - role: logrotate
      tags: [ 'role::logrotate', 'skip::logrotate' ]
      logrotate__dependent_config:
        - '{{ php__logrotate__dependent_config }}'

    - role: apt_install

    - role: php
      tags: [ 'role::php', 'skip::php' ]