diff --git a/.ansible-lint b/.ansible-lint index fe29fed..454cf00 100644 --- a/.ansible-lint +++ b/.ansible-lint @@ -1,8 +1,8 @@ --- # TODO: enable later -# enable_list: -# - fqcn-builtins +enable_list: + - fqcn-builtins skip_list: - role-name diff --git a/.travis.yml b/.travis.yml index 34d1b0b..21d67cc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,6 @@ before_install: install: - sudo pip install "ansible-core$ANSIBLE_VERSION" - sudo pip install ansible-lint - - ansible-galaxy collection install ansible.posix community.general script: - VAGRANT_DEFAULT_PROVIDER=docker vagrant up $PLATFORM diff --git a/handlers/main.yml b/handlers/main.yml index 6563f8d..f15ce53 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,14 +1,14 @@ --- - name: restart php-fpm - service: + ansible.builtin.service: name: '{{ php_fpm_service }}' state: restarted when: php_install_fpm notify: docker restart php-fpm - name: docker restart php-fpm - command: 'service {{ php_fpm_service }} restart' + ansible.builtin.command: 'service {{ php_fpm_service }} restart' args: warn: false when: ansible_virtualization_type == 'docker' diff --git a/tasks/fpm.yml b/tasks/fpm.yml index 9da4ce4..c66a9a4 100644 --- a/tasks/fpm.yml +++ b/tasks/fpm.yml @@ -1,19 +1,19 @@ --- - name: APT | Install PHP-FPM for Debian based systems - apt: + ansible.builtin.apt: pkg: "{{ php_fpm_service }}" state: "{{ 'present' if php_install_fpm else 'absent' }}" when: ansible_os_family == 'Debian' - name: SERVICE | Enable service on FreeBSD - service: + ansible.builtin.service: name: "{{ php_fpm_service }}" - enabled: "{{ 'yes' if php_install_fpm else 'no' }}" + enabled: "{{ 'true' if php_install_fpm else 'false' }}" when: ansible_os_family == 'FreeBSD' - name: LINEINFILE | PHP configuration - lineinfile: + ansible.builtin.lineinfile: dest: '{{ php_fpm_ini }}' regexp: '^;?{{ item.key }}' line: '{{ item.key }} = {{ item.value }}' @@ -25,7 +25,7 @@ notify: restart php-fpm - name: TEMPLATE | Deploy pool configuration - template: + ansible.builtin.template: src: etc/__php__/fpm/pool.d/pool.conf.j2 dest: '{{ php_fpm_pool_dir }}/{{ item.name }}.conf' owner: root @@ -35,7 +35,7 @@ notify: restart php-fpm - name: FILE | Delete default pool if necessary - file: + ansible.builtin.file: path: "{{ php_fpm_pool_dir }}/www.conf" state: absent when: '"www" not in (ansible_local.hanxhx_php.fpm_pool | map(attribute="name") | list) and php_autoremove_default_pool' diff --git a/tasks/main.yml b/tasks/main.yml index f29895c..1a945e2 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,17 +1,17 @@ --- - name: INCLUDE_VARS | Related to OS family - include_vars: "OS_Family_{{ ansible_os_family }}.yml" + ansible.builtin.include_vars: "OS_Family_{{ ansible_os_family }}.yml" - name: INCLUDE_VARS | Related to OS version - include_vars: "{{ item }}" + ansible.builtin.include_vars: "{{ item }}" with_first_found: - "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml" - "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml" - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" - name: SET_FACT | Transform data - set_fact: + ansible.builtin.set_fact: __php_fpm_full_pool: | [ {% for p in php_fpm_poold %} @@ -32,17 +32,20 @@ ] - name: SET_FACT | To YAML - set_fact: + ansible.builtin.set_fact: php_fpm_full_pool: "{{ __php_fpm_full_pool | from_yaml }}" - name: FILE | Creates ansible facts.d - file: + ansible.builtin.file: path: /etc/ansible/facts.d state: directory + owner: root + group: root + mode: 0755 recurse: true - name: COPY | Manage facts - copy: + ansible.builtin.copy: content: "{ \"fpm_pool\": {{ php_fpm_full_pool | to_nice_json }} }" dest: /etc/ansible/facts.d/hanxhx_php.fact owner: root @@ -51,13 +54,13 @@ register: f - name: SETUP | Gathers new facts - setup: + ansible.builtin.setup: when: f.changed tags: - skip_ansible_lint - name: APT | Install PHP packages - apt: + ansible.builtin.apt: pkg: "{{ pkgs }}" state: present update_cache: true @@ -68,29 +71,29 @@ when: ansible_os_family == 'Debian' - name: PKGNG | Install PHP packages - pkgng: + ansible.builtin.pkgng: name: "{{ php_packages + php_extra_packages | flatten | join(',') }}" notify: restart php-fpm when: ansible_os_family == 'FreeBSD' - name: IMPORT_TASKS | PHP-FPM - import_tasks: fpm.yml + ansible.builtin.import_tasks: fpm.yml - name: LINEINFILE | PHP CLI configuration - lineinfile: + ansible.builtin.lineinfile: dest: '{{ php_cli_ini }}' regexp: '^;?{{ item.key }}' line: '{{ item.key }} = {{ item.value }}' loop: "{{ php_ini | combine(php_ini_cli) | dict2items }}" - name: IMPORT_TASKS | Xdebug - import_tasks: xdebug.yml + ansible.builtin.import_tasks: xdebug.yml - name: APT | Install and configure opcache - import_tasks: opcache.yml + ansible.builtin.import_tasks: opcache.yml - name: SERVICE | Ensure PHP-FPM is started - service: + ansible.builtin.service: name: '{{ php_fpm_service }}' state: started when: php_install_fpm and ansible_virtualization_type != 'docker' @@ -98,7 +101,7 @@ - block: - name: COMMAND | Check if PHP-FPM is started (Docker) - command: 'service {{ php_fpm_service }} status' + ansible.builtin.command: 'service {{ php_fpm_service }} status' args: warn: false register: dps @@ -106,7 +109,7 @@ failed_when: false - name: COMMAND | Ensure PHP-FPM is started (Docker) - command: 'service {{ php_fpm_service }} start' + ansible.builtin.command: 'service {{ php_fpm_service }} start' args: warn: false when: dps.stdout.find('is not running') != -1 diff --git a/tasks/opcache.yml b/tasks/opcache.yml index b6feac1..0e12592 100644 --- a/tasks/opcache.yml +++ b/tasks/opcache.yml @@ -3,11 +3,11 @@ - block: - name: APT | Install APCu - apt: + ansible.builtin.apt: pkg: "php-apcu" - name: APT | Install Opcache - apt: + ansible.builtin.apt: pkg: "{{ php_package_prefix }}opcache" when: ansible_os_family == 'Debian' @@ -15,17 +15,17 @@ - block: - name: PKGNG | Install APCu - pkgng: + ansible.builtin.pkgng: name: "php{{ php_version | replace('.', '') }}-pecl-APCu" - name: PKGNG | Install Opcache - pkgng: + ansible.builtin.pkgng: name: "{{ php_package_prefix }}opcache" when: ansible_os_family == 'FreeBSD' - name: TEMPLATE | Configure Opcache - template: + ansible.builtin.template: src: "etc/__php__/mods-available/opcache.ini.j2" dest: "{{ php_mods_dir }}/opcache.ini" owner: root @@ -34,7 +34,7 @@ notify: restart php-fpm - name: TEMPLATE | Configure APCu - template: + ansible.builtin.template: src: "etc/__php__/mods-available/apcu.ini.j2" dest: "{{ php_mods_dir }}/apcu.ini" owner: root diff --git a/tasks/xdebug.yml b/tasks/xdebug.yml index aaafd7b..baf1f3b 100644 --- a/tasks/xdebug.yml +++ b/tasks/xdebug.yml @@ -3,7 +3,7 @@ - block: - name: APT | Install xdebug - apt: + ansible.builtin.apt: pkg: "{{ php_xdebug_package }}" state: present update_cache: true @@ -11,12 +11,12 @@ when: ansible_os_family == 'Debian' - name: PKGNG | Install xdebug - pkgng: + ansible.builtin.pkgng: name: "{{ php_xdebug_package }}" when: ansible_os_family == 'FreeBSD' and php_xdebug_package is defined - name: TEMPLATE | Deploy module configurations - template: + ansible.builtin.template: src: "etc/__php__/mods-available/xdebug.ini.j2" dest: "{{ php_mods_dir }}/xdebug.ini" owner: root @@ -28,13 +28,13 @@ - block: - name: APT | Uninstall xdebug - apt: + ansible.builtin.apt: pkg: "{{ php_xdebug_package }}" state: absent when: ansible_os_family == 'Debian' - name: PKGNG | Uninstall xdebug - pkgng: + ansible.builtin.pkgng: name: "{{ php_xdebug_package }}" state: absent when: ansible_os_family == 'FreeBSD' diff --git a/tests/includes/Debian/sury.yml b/tests/includes/Debian/sury.yml index 1f06076..a0ee287 100644 --- a/tests/includes/Debian/sury.yml +++ b/tests/includes/Debian/sury.yml @@ -1,9 +1,9 @@ --- - name: APT | Install Sury key - apt_key: + ansible.builtin.apt_key: url: 'https://packages.sury.org/php/apt.gpg' - name: APT_REPOSITORY | Add Sury repository - apt_repository: + ansible.builtin.apt_repository: repo: 'deb https://packages.sury.org/php/ {{ ansible_distribution_release }} main' diff --git a/tests/includes/pre_Debian.yml b/tests/includes/pre_Debian.yml index a9add58..3f12797 100644 --- a/tests/includes/pre_Debian.yml +++ b/tests/includes/pre_Debian.yml @@ -1,11 +1,11 @@ --- - name: SET_FACT | Prepare test vars - set_fact: + ansible.builtin.set_fact: __nginx_conf: /etc/nginx/nginx.conf - name: APT | Install packages - apt: + ansible.builtin.apt: pkg: "{{ p }}" update_cache: true cache_valid_time: 3600 @@ -20,5 +20,5 @@ - vim - name: INCLUDE_TASKS | Sury - include_tasks: Debian/sury.yml + ansible.builtin.include_tasks: Debian/sury.yml when: php_version != php_default_version diff --git a/tests/includes/pre_FreeBSD.yml b/tests/includes/pre_FreeBSD.yml index 823b42f..c0a487c 100644 --- a/tests/includes/pre_FreeBSD.yml +++ b/tests/includes/pre_FreeBSD.yml @@ -1,10 +1,10 @@ --- - name: SET_FACT | Prepare test vars - set_fact: + ansible.builtin.set_fact: __nginx_conf: /usr/local/etc/nginx/nginx.conf php_xdebug_package: 'php72-pecl-xdebug-2.6.1' - name: PKGNG | Install packages - pkgng: + ansible.builtin.pkgng: name: ['curl', 'nginx'] diff --git a/tests/test.yml b/tests/test.yml index 477e946..842c3ee 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -32,10 +32,10 @@ pre_tasks: - name: INCLUDE_TASKS | Pre tasks related to OS - include_tasks: "includes/pre_{{ ansible_os_family }}.yml" + ansible.builtin.include_tasks: "includes/pre_{{ ansible_os_family }}.yml" - name: USER | Create PHP user - user: + ansible.builtin.user: name: 'foo' system: true create_home: false @@ -44,26 +44,29 @@ tasks: - name: TEMPLATE | Nginx site config - template: + 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 - command: "cp {{ __nginx_conf | dirname }}/fastcgi_params {{ __nginx_conf | dirname }}/fastcgi.conf" + 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) - lineinfile: + 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 - service: + ansible.builtin.service: name: nginx state: started when: ansible_virtualization_type != 'docker' @@ -71,7 +74,7 @@ - block: - name: COMMAND | Docker nginx status - command: service nginx status + ansible.builtin.command: service nginx status args: warn: false changed_when: false @@ -79,7 +82,7 @@ register: ngs - name: COMMAND | Docker start nginx - command: service nginx start + ansible.builtin.command: service nginx start args: warn: false when: ngs.stdout.find('nginx is not running') != -1 @@ -89,13 +92,13 @@ handlers: - name: reload nginx - service: + ansible.builtin.service: name: nginx state: reloaded notify: docker reload nginx - name: docker reload nginx - command: service nginx reload + ansible.builtin.command: service nginx reload args: warn: false notify: docker reload nginx @@ -107,36 +110,48 @@ post_tasks: - name: SHELL | Test php-cli - shell: php -i | grep '^PHP Version => {{ php_version }}' | head -n 1 + 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 - file: + ansible.builtin.file: dest: /var/www state: directory + owner: root + group: root + mode: 0755 - name: COPY | Add phpinfo - copy: + ansible.builtin.copy: dest: /var/www/phpinfo.php content: ' /dev/null | grep h1 | grep -o 'PHP Version {{ php_version }}' | sed -r 's/ /dev/null | grep h1 | grep -o 'PHP Version {{ php_version }}' | sed -r 's/ /dev/null" + ansible.builtin.shell: "curl -H 'Host: {{ vhost }}' http://127.0.0.1/ini.php 2> /dev/null" args: warn: false changed_when: false @@ -144,11 +159,11 @@ failed_when: 'php_fpm_poold.1.php_admin_value.memory_limit not in c.stdout' - name: URI | Check ping - uri: + 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 - uri: + ansible.builtin.uri: url: "http://localhost{{ php_fpm_poold.0.status_path }}" when: php_fpm_poold.0.status_path is defined