From 2987051153299f56499a341e85f136baa78ee8b5 Mon Sep 17 00:00:00 2001 From: Emilien Mantel Date: Thu, 16 Mar 2017 18:22:32 +0100 Subject: [PATCH] Manages PHP 7.1 --- .travis.yml | 1 + README.md | 4 +-- Vagrantfile | 1 + meta/main.yml | 8 +++-- tests/debian-jessie-php-7.1.Dockerfile | 5 +++ tests/test.yml | 45 ++++++++++++++++++++++---- vars/main.yml | 1 + vars/php-7.1.yml | 8 +++++ 8 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 tests/debian-jessie-php-7.1.Dockerfile create mode 100644 vars/php-7.1.yml diff --git a/.travis.yml b/.travis.yml index f550766..c9a2ee7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ env: - PLATFORM=debian-jessie-php-5.6 - PLATFORM=debian-jessie-php-7.0 + - PLATFORM=debian-jessie-php-7.1 sudo: required diff --git a/README.md b/README.md index 925734e..aa86d0c 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Ansible PHP (+FPM) role for Debian Install PHP (php-fpm optional) on Debian Jessie/Stretch. Manage APCu, Opcache, Xdebug. -Managed versions: 5.6 and 7.0 +Managed versions: 5.6, 7.0, 7.1 Requirements ------------ @@ -20,7 +20,7 @@ You should look at [default vars](defaults/main.yml). ### Writable vars -- `php_version`: 5.6 (default) or 7.0 +- `php_version`: 5.6 (default), 7.0, 7.1 - `php_install_fpm`: boolean, install and manage php-fpm (default is true) - `php_install_xdebug`: boolean, install [Xdebug](http://xdebug.org) - `php_extra_packages`: additional php packages to install (default is an empty list). diff --git a/Vagrantfile b/Vagrantfile index db498a0..c1336e4 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -8,6 +8,7 @@ Vagrant.configure("2") do |config| vms = [ [ "jessie-php-5.6", "debian/contrib-jessie64", "192.168.33.88", "5.6" ], [ "jessie-php-7.0", "debian/contrib-jessie64", "192.168.33.89", "7.0" ], + [ "jessie-php-7.1", "debian/contrib-jessie64", "192.168.33.89", "7.1" ], [ "stretch-php-5.6", "sharlak/debian_stretch_64", "192.168.33.90", "5.6" ], [ "stretch-php-7.0", "sharlak/debian_stretch_64", "192.168.33.91", "7.0" ] ] diff --git a/meta/main.yml b/meta/main.yml index af79f48..f6e2579 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -1,10 +1,10 @@ --- galaxy_info: author: Emilien Mantel - description: Install and configure PHP 5.6/7.0 (+ FPM is wanted) + description: Install and configure PHP 5.6/7.0/7.1 (+ FPM is wanted) company: license: GPLv2 - min_ansible_version: 1.9 + min_ansible_version: 2.0 platforms: - name: Debian versions: @@ -13,7 +13,11 @@ galaxy_info: - development - web - php + - php5.6 + - php5 - php7 + - php7.0 + - php7.1 - debian dependencies: [] diff --git a/tests/debian-jessie-php-7.1.Dockerfile b/tests/debian-jessie-php-7.1.Dockerfile new file mode 100644 index 0000000..36cad27 --- /dev/null +++ b/tests/debian-jessie-php-7.1.Dockerfile @@ -0,0 +1,5 @@ +FROM williamyeh/ansible:debian8-onbuild + +RUN apt-get update +CMD ["sh", "tests/test.sh", "7.1"] + diff --git a/tests/test.yml b/tests/test.yml index bb29df3..76b4f00 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -6,48 +6,81 @@ php_extra_packages: - '{{ php_apt_prefix }}recode' php_install_xdebug: true + pre_tasks: - - name: APT | Install DotDeb key - apt_key: url='http://www.dotdeb.org/dotdeb.gpg' state=present + + - name: APT | Install packages + apt: pkg={{ item }} update_cache=yes cache_valid_time=3600 + with_items: ['apt-transport-https', 'curl', 'lsb-release', 'ca-certificates'] + + - block: + + - name: APT | Install DotDeb key + apt_key: url='http://www.dotdeb.org/dotdeb.gpg' state=present + + - name: APT | Add Dotdeb repository for Jessie + PHP7 + apt_repository: repo='deb http://packages.dotdeb.org jessie all' state=present + when: > ansible_distribution_major_version | version_compare(8, 'eq') and - php_version | version_compare('7.0', 'ge') - - name: APT | Add Dotdeb repository for Jessie + PHP7 - apt_repository: repo='deb http://packages.dotdeb.org jessie all' state=present + php_version | version_compare('7.0', 'eq') + + - block: + + - name: APT | Install Sury key + apt_key: url='https://packages.sury.org/php/apt.gpg' state=present + + - name: APT | Add Dotdeb repository for Jessie + PHP7 + apt_repository: repo='deb https://packages.sury.org/php/ jessie main' state=present + when: > ansible_distribution_major_version | version_compare(8, 'eq') and - php_version | version_compare('7.0', 'ge') + php_version | version_compare('7.1', 'eq') + - name: APT | Install nginx apt: pkg=nginx state=present update_cache=yes cache_valid_time=3600 + - name: SHELL | Get nginx version shell: nginx -V 2>&1 | awk -F '/' '/nginx version/ { print $2 }' register: nginx_version changed_when: false + - set_fact: nginx_include="fastcgi_params" when: nginx_version.stdout | version_compare('1.6', '<', true) + - set_fact: nginx_include="fastcgi.conf" when: nginx_version.stdout | version_compare('1.6', '>=', true) + tasks: + - name: COPY | Vhost copy: > dest=/etc/nginx/sites-enabled/{{ vhost }} content='server { server_name {{ vhost }}; root /var/www; location ~ \.php$ { include {{ nginx_include }}; fastcgi_pass unix:{{ php_default_fpm_sock }}; } }' notify: reload nginx + handlers: + - name: reload nginx service: name=nginx state=reloaded + roles: - ../../ + post_tasks: + - name: SHELL | Test php-cli shell: php -i | grep '^PHP Version' | head -n 1 changed_when: false register: p failed_when: p.stdout == '' + - name: FILE | Create /var/www file: dest=/var/www state=directory + - name: COPY | Add phpinfo copy: dest=/var/www/phpinfo.php content=' /dev/null | grep h1 | grep -o 'PHP Version [57].*<' | sed -r 's/