Conditional not working when evaluating a complex data structure

I have the following playbook. As you can see Im reading the ec2 tags and then attempt to run a role based on a condition. But the condition is never met and it always skips the role. As you can see Im printing the value of the variable with debug and I can see the value matches. But in the code the evaluation fails and the condition is never met. I tried different variant for the allTags.tags.role like adding quotes and brackets. Nothing worked. I finally decided to abandon the role based on conditional idea and went with group_by. But I would like to understand what I was doing wrong here. Any help would be greatly appreciated.

---
  - hosts: localhost
    sudo: true

    tasks:
      - name: gather ec2 facts
        action: ec2_facts

      - name: get environment tag
        action: ec2_tag resource={{ ansible_ec2_instance_id }} region={{ ansible_ec2_placement_region }} state=list
        register: allTags

      - debug: var=allTags.tags.role

    roles:
    - { role: storm-configure, when: allTags.tags.role == 'storm' }
    - { role: nimbus, when: allTags.tags.role == 'nimbus' }

If you are trying to manage ec2 roles based on tag, it would be much more idiomatic to use the EC2 dynamic inventory source and just target the tag group with the “hosts” spec.

What you have in the above is rather weird because you have the roles attached to the play configuring localhost, and I doubt you want to configure localhost.