Error assigning variables with Conditionals

When assigning variables under certain conditions, if there is no match, the last condition is erroneously assigned.

Ej:

---
- hosts: hostwin
  vars:
     # Definimos el paquete a instalar según el sistema operativo.
     - package_name: httpd
       when: ansible_os_family == "Red Hat"
     - package_name: apache2
       when: ansible_os_family == "Debian"

  tasks:

     # Consultamos al usuario si quiere actuar con dicho paquete.
     - name: Consulta sobre la instalacion del paquete {{package_name}} en {{ansible_os_family}}
       pause: prompt="Acepta la instalacion del paquete {{package_name}} en {{ansible_os_family}} "
       register: confirmación
# ansible-playbook playbooks/test-httpd.yml
PLAY [hostwin] ***************************************
TASK [setup] *******************************************************************
ok: [hostwin]
TASK [Consulta sobre la instalacion del paquete apache2 en **Windows**] ************
[Consulta sobre la instalacion del paquete apache2 en **Windows**]
Acepta la instalacion del paquete apache2 en **Windows** :
ok: [hostwin]
PLAY RECAP *********************************************************************
hostwin : ok=2    changed=0    unreachable=0    failed=0

This should be null or return error, but do not assign any one.

Well, works as expected ... `when:` is a TASK keyword, not for use in
var declarations, you need to use jinja2 expressions for conditionals
like that:

package_name: "{{ (ansible_os_family == "Red Hat")|ternary('httpd',
'apache2') }}

ansible 2.2.1.0

Linux 2.6.32-504.el6.x86_64 #1 SMP Tue Sep 16 01:56:35 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

Ok,
This would be the right way, right?

---
- hosts: hostwin

  vars:
     # definimos variables de ejemplo
     - site: localhost

  tasks:
     - name: Definimos variables para Red Hat.
       set_fact:
          package_name: "httpd"
       when:
          ansible_os_family == "Red Hat"

     - name: Definimos variables para Debian.
       set_fact:
          package_name: "apache2"
       when:
          ansible_os_family == "Debian"

     - name: Definimos variables para Windows.
       set_fact:
          package_name: "www"
       when:
          ansible_os_family == "Windows"

     # Consultamos al usuario si quiere actuar con dicho paquete.
     - name: Consulta sobre la instalacion del paquete {{package_name}} en {{ansible_os_family}}.
       pause: prompt="Acepta la instalacion del paquete {{package_name}} en {{ansible_os_family}} "
       register: confirmación

One way, I prefer to avoid 'right' and 'wrong'.