--- - hosts: all name: Test all vars: vhost: 'test.local' php_extra_packages: - '{{ php_package_prefix }}pgsql' php_install_xdebug: true php_autoremove_default_pool: true php_ini_fpm: display_errors: 'Off' php_ini_cli: error_reporting: 'E_ALL' php_fpm_poold: - pool_name: 'test_ansible' listen: '/run/php/php-ansible1.sock' pm: 'dynamic' pm_max_children: 250 pm_start_servers: 10 pm_min_spare_servers: 10 pm_max_spare_servers: 20 status_path: '/status' ping_path: '/ping' ping_response: 'ok' - name: 'test_ansible2' user: 'foo' php_env: foo: bar php_value: display_errors: 'Off' php_admin_value: memory_limit: '98M' pre_tasks: - name: INCLUDE_TASKS | Pre tasks related to OS ansible.builtin.include_tasks: "includes/pre_{{ ansible_os_family }}.yml" - name: USER | Create PHP user ansible.builtin.user: name: 'foo' system: true create_home: false shell: '/usr/sbin/nologin' tasks: - name: TEMPLATE | Nginx site config ansible.builtin.template: src: "templates/nginx.conf.j2" dest: "{{ __nginx_conf }}" mode: 0644 owner: root group: root notify: Reload nginx - name: COMMAND | Fix nginx config ansible.builtin.command: "cp {{ __nginx_conf | dirname }}/fastcgi_params {{ __nginx_conf | dirname }}/fastcgi.conf" args: creates: "{{ __nginx_conf | dirname }}/fastcgi.conf" notify: Reload nginx - name: LINEINFILE | Fix nginx config (second step) ansible.builtin.lineinfile: regexp: '^fastcgi_param\s+SCRIPT_FILENAME' line: "fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;" dest: "{{ __nginx_conf | dirname }}/fastcgi.conf" notify: Reload nginx - name: SERVICE | Ensure nginx is started ansible.builtin.service: name: nginx state: started when: ansible_virtualization_type != 'docker' - name: Start nginx if testing with Docker when: ansible_virtualization_type == 'docker' block: - name: COMMAND | Docker nginx status ansible.builtin.command: service nginx status changed_when: false failed_when: false register: ngs - name: COMMAND | Docker start nginx ansible.builtin.command: service nginx start when: ngs.stdout.find('nginx is not running') != -1 handlers: - name: Reload nginx ansible.builtin.service: name: nginx state: reloaded notify: Docker reload nginx - name: Docker reload nginx ansible.builtin.command: service nginx reload notify: Docker reload nginx when: ansible_virtualization_type == 'docker' roles: - ../../ post_tasks: - name: SHELL | Test php-cli ansible.builtin.shell: set -o pipefail && php -i | grep '^PHP Version => {{ php_version }}' | head -n 1 changed_when: false register: p failed_when: p.stdout == '' args: executable: /bin/bash - name: FILE | Create /var/www ansible.builtin.file: dest: /var/www state: directory owner: root group: root mode: 0755 - name: COPY | Add phpinfo ansible.builtin.copy: dest: /var/www/phpinfo.php content: ' /dev/null | grep h1 | grep -o 'PHP Version {{ php_version }}' | sed -r 's/ /dev/null" changed_when: false register: c failed_when: 'php_fpm_poold.1.php_admin_value.memory_limit not in c.stdout' - name: URI | Check ping ansible.builtin.uri: url: "http://localhost{{ php_fpm_poold.0.ping_path }}" when: php_fpm_poold.0.ping_path is defined - name: URI | Check status ansible.builtin.uri: url: "http://localhost{{ php_fpm_poold.0.status_path }}" when: php_fpm_poold.0.status_path is defined - name: Debian extra checks when: ansible_os_family == 'Debian' block: - name: SHELL | Check if we installed multiple PHP versions ansible.builtin.shell: set -o pipefail && (dpkg -l | grep 'php[[:digit:]].*common' | wc -l) args: executable: /bin/bash failed_when: false changed_when: false register: check_multiple_php - name: FAIL | If we have multiple PHP version ansible.builtin.fail: msg: "Multiple PHP versions detected" when: check_multiple_php.stdout != '1'