- name: Configure web containers
  hosts: web
  gather_facts: false
  vars:
    ansible_python_interpreter: /usr/bin/python3
  pre_tasks:
    - name: Install Python required by Ansible modules
      ansible.builtin.raw: |
        if command -v python3 >/dev/null 2>&1 && python3 -c 'import apt' >/dev/null 2>&1; then
          echo PYTHON_READY
        else
          apt-get update
          DEBIAN_FRONTEND=noninteractive apt-get install -y python3 python3-apt
          echo PYTHON_INSTALLED
        fi
      register: python_bootstrap
      changed_when: "'PYTHON_INSTALLED' in python_bootstrap.stdout"

    - name: Gather facts after installing Python
      ansible.builtin.setup:

  tasks:
    - name: Install nginx
      ansible.builtin.apt:
        name: nginx
        state: present
        update_cache: true

    - name: Write home page
      ansible.builtin.copy:
        dest: /var/www/html/index.html
        content: "served by {{ inventory_hostname }}\n"
        mode: "0644"

    - name: Start nginx when it is not running
      ansible.builtin.shell: |
        if test -f /run/nginx.pid && kill -0 "$(cat /run/nginx.pid)" 2>/dev/null; then
          echo NGINX_RUNNING
        else
          nginx
          echo NGINX_STARTED
        fi
      register: nginx_start
      changed_when: "'NGINX_STARTED' in nginx_start.stdout"
